[Tkabber-dev] r731 - in trunk/tkabber: . ifacetk jabberlib-tclxml msgs plugins/chat plugins/filetransfer plugins/general plugins/iq trans

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Mon Sep 25 23:00:40 MSD 2006


Author: sergei
Date: 2006-09-25 22:59:51 +0400 (Mon, 25 Sep 2006)
New Revision: 731

Added:
   trunk/tkabber/trans/pl.msg
Modified:
   trunk/tkabber/ChangeLog
   trunk/tkabber/disco.tcl
   trunk/tkabber/emoticons.tcl
   trunk/tkabber/ifacetk/iface.tcl
   trunk/tkabber/jabberlib-tclxml/jabberlib.tcl
   trunk/tkabber/messages.tcl
   trunk/tkabber/msgs/es.msg
   trunk/tkabber/msgs/pl.msg
   trunk/tkabber/msgs/ru.msg
   trunk/tkabber/plugins/chat/logger.tcl
   trunk/tkabber/plugins/filetransfer/http.tcl
   trunk/tkabber/plugins/general/remote.tcl
   trunk/tkabber/plugins/iq/version.tcl
   trunk/tkabber/presence.tcl
   trunk/tkabber/roster.tcl
   trunk/tkabber/userinfo.tcl
Log:
	* msgs/es.msg: Updated (thanks to Badlop).

	* disco.tcl, plugins/chat/logger.tcl: Fixed typo.

	* ifacetk/iface.tcl, userinfo.tcl: Replaced menu entry
	  'Show user info...' by 'Show user or service info...' which is
	  more correct.

	* msgs/ru.msg: Updated.

	* emoticons.tcl: Added support of emoticons in formats other than
	  GIF (thanks to Irek Chmielowiec).

	* messages.tcl: Made subscription request translateable (thanks to
	  Irek Chmielowiec).

	* msgs/pl.msg, trans/msg.pl: Updated (thanks to Irek Chmielowiec).

	* messages.tcl: Remove item from the roster when user presses
	  'Unsubscribe' button in subscription window. Otherwise roster
	  gradually becomes full of users with subscription 'none'.
	
	* roster.tcl: Fixed typo.

	* plugins/filetransfer/http.tcl: Added two options: advertised
	  host and port for file transfer. They are useful for tranferring
	  files through NAT via forwarded port (thanks to Antoni Grzymala).

	* plugins/iq/version.tcl: Guess Windows version.

	* plugins/general/remote.tcl: Moved remote control functions
	  (leave groupchats, forward messages, change status) to separate
	  namespaces. Moved session variables to a separate namespace,
	  index sessions by connection ID, JID, node and session ID.
	  Do not close session immediately if the error type is 'modify'
	  (thanks to Artem Borodin).


Modified: trunk/tkabber/ChangeLog
===================================================================
--- trunk/tkabber/ChangeLog	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/ChangeLog	2006-09-25 18:59:51 UTC (rev 731)
@@ -1,3 +1,42 @@
+2006-09-25  Sergei Golovan  <sgolovan at nes.ru>
+
+	* msgs/es.msg: Updated (thanks to Badlop).
+
+	* disco.tcl, plugins/chat/logger.tcl: Fixed typo.
+
+	* ifacetk/iface.tcl, userinfo.tcl: Replaced menu entry
+	  'Show user info...' by 'Show user or service info...' which is
+	  more correct.
+
+	* msgs/ru.msg: Updated.
+
+	* emoticons.tcl: Added support of emoticons in formats other than
+	  GIF (thanks to Irek Chmielowiec).
+
+	* messages.tcl: Made subscription request translateable (thanks to
+	  Irek Chmielowiec).
+
+	* msgs/pl.msg, trans/msg.pl: Updated (thanks to Irek Chmielowiec).
+
+	* messages.tcl: Remove item from the roster when user presses
+	  'Unsubscribe' button in subscription window. Otherwise roster
+	  gradually becomes full of users with subscription 'none'.
+	
+	* roster.tcl: Fixed typo.
+
+	* plugins/filetransfer/http.tcl: Added two options: advertised
+	  host and port for file transfer. They are useful for tranferring
+	  files through NAT via forwarded port (thanks to Antoni Grzymala).
+
+	* plugins/iq/version.tcl: Guess Windows version.
+
+	* plugins/general/remote.tcl: Moved remote control functions
+	  (leave groupchats, forward messages, change status) to separate
+	  namespaces. Moved session variables to a separate namespace,
+	  index sessions by connection ID, JID, node and session ID.
+	  Do not close session immediately if the error type is 'modify'
+	  (thanks to Artem Borodin).
+
 2006-09-24  Sergei Golovan  <sgolovan at nes.ru>
 
 	* filetransfer/si.tcl: Do not use progressbar if file size is

Modified: trunk/tkabber/disco.tcl
===================================================================
--- trunk/tkabber/disco.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/disco.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -1256,8 +1256,8 @@
 	lassign [get_category_type $t $tnode] category type
 
 	if {![info exists category]} {
-	    # Using parent tag to get conference cathegory
-	    # ??? Which else cathegory could be got from parent?
+	    # Using parent tag to get conference category
+	    # ??? Which else category could be got from parent?
 	    lassign [get_category_type $t [$t parent $tnode]] category type
 
 	    if {![info exists category] || ($category != "conference")} {

Modified: trunk/tkabber/emoticons.tcl
===================================================================
--- trunk/tkabber/emoticons.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/emoticons.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -97,14 +97,14 @@
 		}
 	    }
 	    object {
-		switch -- [jlib::wrapper:getattr $vars mime] {
-		    image/gif {set graphic $chdata}
+		switch -glob -- [jlib::wrapper:getattr $vars mime] {
+		    image/* {set graphic $chdata}
 		}
 	    }
 	    graphic {
 		# For compatibility with older versions of icondef.xml
-		switch -- [jlib::wrapper:getattr $vars type] {
-		    image/gif {set graphic $chdata}
+		switch -glob -- [jlib::wrapper:getattr $vars type] {
+		    image/* {set graphic $chdata}
 		}
 	    }
 	    sound {}

Modified: trunk/tkabber/ifacetk/iface.tcl
===================================================================
--- trunk/tkabber/ifacetk/iface.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/ifacetk/iface.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -333,7 +333,7 @@
 		       -command {chat::open_chat_dialog}] \
 		  [list command [::msgcat::mc "Join group..."] {} {} {}\
 		       -command {join_group_dialog}] \
-		  [list command [::msgcat::mc "Show user info..."] {} {} {} \
+		  [list command [::msgcat::mc "Show user or service info..."] {} {} {} \
 		       -command {userinfo::show_info_dialog}] \
 		  {separator} \
 		  [list command [::msgcat::mc "Jabber Browser"] {} {} {} \

Modified: trunk/tkabber/jabberlib-tclxml/jabberlib.tcl
===================================================================
--- trunk/tkabber/jabberlib-tclxml/jabberlib.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/jabberlib-tclxml/jabberlib.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -324,8 +324,9 @@
 proc jlib::socket_ip {connid} {
     variable lib
 
-    if {[info exists lib($connid,sck)]} {
-	return [lindex [fconfigure $lib($connid,sck) -sockname] 0]
+    if {[info exists lib($connid,sck)] && \
+	![catch {fconfigure $lib($connid,sck) -sockname} sock]} {
+	return [lindex $sock 0]
     } else {
 	return ""
     }

Modified: trunk/tkabber/messages.tcl
===================================================================
--- trunk/tkabber/messages.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/messages.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -608,24 +608,9 @@
 
     set bbox [ButtonBox $mw.buttons -spacing 0 -padx 10 -default 0]
     $bbox add -text [::msgcat::mc "Subscribe"] \
-        -command "jlib::send_presence -to [list $from] -type subscribed \
-		      -connection $connid
-                  switch -- \
-                      \[roster::itemconfig $connid \
-                          [list [tolower_node_and_domain $from]] -subsc\] {
-                      {}   -
-                      none -
-                      from {
-                          message::send_subscribe_dialog [list $from] \
-			      -connection $connid
-                      }
-                  }
-                  destroy [list $mw]"
-
+	      -command [list [namespace current]::subscribe $mw $connid $from]
     $bbox add -text [::msgcat::mc "Unsubscribe"] \
-        -command [join [list [list jlib::send_presence -to $from \
-                                  -type unsubscribed -connection $connid] \
-                            [list destroy $mw]] \n]
+	      -command [list [namespace current]::unsubscribe $mw $connid $from]
     bind $mw <Return> "ButtonBox::invoke $bbox default"
     bind $mw <Escape> "ButtonBox::invoke $bbox 1"
     pack $bbox -side bottom -anchor e -padx 2m -pady 2m
@@ -681,6 +666,30 @@
 
 ###############################################################################
 
+proc message::subscribe {mw connid jid} {
+    jlib::send_presence -to $jid -type subscribed -connection $connid
+
+    switch -- [roster::itemconfig $connid \
+				  [tolower_node_and_domain $jid] -subsc] {
+        {}   -
+        none -
+        from {
+            message::send_subscribe_dialog $jid -connection $connid
+        }
+    }
+
+    destroy $mw
+}
+
+###############################################################################
+
+proc message::unsubscribe {mw connid jid} {
+    ::roster::remove_item $connid [tolower_node_and_domain $jid]
+    destroy $mw
+}
+
+###############################################################################
+
 proc message::destroy_subscription_dialogs {connid jid name groups subsc ask} {
     switch -- $subsc {
 	both -
@@ -823,7 +832,7 @@
     pack $mw.sw -side top -fill both -expand yes -in $mw.frame
 
     text $mw.body -width 60 -height 8 -wrap word
-    $mw.body insert 0.0 "I would like to add you to my roster."
+    $mw.body insert 0.0 [::msgcat::mc "I would like to add you to my roster."]
     pack $mw.body -side top -fill both -expand yes -in $mw.sw
     $mw.sw setwidget $mw.body
 

Modified: trunk/tkabber/msgs/es.msg
===================================================================
--- trunk/tkabber/msgs/es.msg	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/msgs/es.msg	2006-09-25 18:59:51 UTC (rev 731)
@@ -7,19 +7,20 @@
 ::msgcat::mcset es " by " " por "
 ::msgcat::mcset es " by %s" " por %s"
 ::msgcat::mcset es "#" "#"
+::msgcat::mcset es "%s Headlines" "Titulares de %s"
+::msgcat::mcset es "%s SSL Certificate Info" "Información de Certificado SSL de %s"
 ::msgcat::mcset es "%s doesn't want to be disturbed" "%s está ocupado"
 ::msgcat::mcset es "%s has activated chat window" "%s ha activado la ventana de charla"
 ::msgcat::mcset es "%s has become available" "%s está ahora disponible"
 ::msgcat::mcset es "%s has been banned" "%s ha sido bloqueado"
-::msgcat::mcset es "%s has been kicked because 					   of membership loss" "%s ha sido expulsado porque ya no es miembro"
-::msgcat::mcset es "%s has been kicked because 					   room became members-only" "%s ha sido expulsado porque ahora la sala es solo para miembros"
+::msgcat::mcset es "%s has been kicked because of membership loss" "%s ha sido expulsado porque ya no es miembro"
+::msgcat::mcset es "%s has been kicked because room became members-only" "%s ha sido expulsado porque la sala es ahora solo para miembros"
 ::msgcat::mcset es "%s has been kicked" "%s ha sido expulsado"
 ::msgcat::mcset es "%s has gone chat window" "%s se ha ido de la ventana de charla"
 ::msgcat::mcset es "%s has inactivated chat window" "%s ha desactivado la ventana de charla"
 ::msgcat::mcset es "%s has left" "%s se ha ido"
-::msgcat::mcset es "%s Headlines" "Titulares de %s"
 ::msgcat::mcset es "%s info" "Información de %s"
-::msgcat::mcset es "%s invites you to conference 					  room %s" "%s te invita a la sala de charla %s"
+::msgcat::mcset es "%s invites you to conference room %s" "%s te invita a la sala de charla %s"
 ::msgcat::mcset es "%s is %s" "%s está %s"
 ::msgcat::mcset es "%s is available" "%s está disponible"
 ::msgcat::mcset es "%s is away" "%s está ausente"
@@ -31,9 +32,9 @@
 ::msgcat::mcset es "%s is paused a reply" "%s ha pausado una respuesta"
 ::msgcat::mcset es "%s is unavailable" "%s se ha desconectado"
 ::msgcat::mcset es "%s msgs" "%s mensajes"
+::msgcat::mcset es "%s plugin" "plugin %s"
 ::msgcat::mcset es "%s purportedly signed by %s can't be verified.\n\n%s." "%s supuestamente firmado pero no puede ser verificado.\n\n%s."
 ::msgcat::mcset es "%s request from %s" "Petición %s de %s"
-::msgcat::mcset es "%s SSL Certificate Info" "Información de Certificado SSL de %s"
 ::msgcat::mcset es "%s: %s/%s, Description: %s, Version: %s\nNumber of children: %s" "%s: %s/%s, Descripción: %s, Versión: %s\nNúmero de hijos: %s"
 ::msgcat::mcset es "&Help" "&Ayuda"
 ::msgcat::mcset es "&Services" "&Servicios"
@@ -42,36 +43,26 @@
 ::msgcat::mcset es "/me has set the subject to: %s" "/me ha puesto el asunto a: %s"
 ::msgcat::mcset es "<- Remove" "<- Eliminar"
 ::msgcat::mcset es ">>> Unable to decipher data: %s <<<" ">>> No ha sido posible descifrar los datos: %s <<<"
-::msgcat::mcset es "\n\tAffiliation: %s" "\n\tAfiliación: %s"
-::msgcat::mcset es "\n\tCan't browse: %s" "\n\tNo se puede navegar: %s"
-::msgcat::mcset es "\n\tClient: %s" "\n\tCliente: %s"
-::msgcat::mcset es "\n\tJID: %s" "\n\tJID: %s"
-::msgcat::mcset es "\n\tName: %s" "\n\tNombre: %s"
-::msgcat::mcset es "\n\tOs: %s" "\n\tSO: %s"
-::msgcat::mcset es "\n\tPresence is signed:" "\n\tLa presencia está firmada:"
-::msgcat::mcset es "\nAlternative venue: %s" "\nLugar alternativo: %s"
-::msgcat::mcset es "\nReason is: %s" "\nLa razón es: %s"
-::msgcat::mcset es "\nReason: %s" "\nRazón: %s"
-::msgcat::mcset es "\nRoom is empty at %s" "\nLa sala %s está vacía"
-::msgcat::mcset es "\nRoom participants at %s:" "\nParticipantes a las %s:"
 ::msgcat::mcset es "Aborted" "Abortado"
 ::msgcat::mcset es "About " "Acerca de "
 ::msgcat::mcset es "About" "Acerca de"
+::msgcat::mcset es "Accept connections from my own JID." "Aceptar conexiones de mi propio JID."
+::msgcat::mcset es "Accept connections from the listed JIDs." "Aceptar conexiones de los JIDs listados."
 ::msgcat::mcset es "Accept default config" "Aceptar la configuración por defecto"
 ::msgcat::mcset es "Account" "Cuenta"
 ::msgcat::mcset es "Action" "Acción"
-::msgcat::mcset es "Activate visible/invisible/ignore lists before sending 		       initial presence." "Activar las listasde visibles/invisibles/ignorados antes de enviar la primera presencia al conectar."
-::msgcat::mcset es "Activating privacy list failed: 				 %s\n\nTry to reconnect. If problem 				 persists, you may want to disable privacy 				 list activation at start" "Ocurrió un fallo al activar la lista de privacidad: 				 %s\n\nIntenta reconectar. Si el problema persiste, quizá quieras desactivar la activación automática de listas al conectar"
+::msgcat::mcset es "Activate visible/invisible/ignore lists before sending initial presence." "Activar listas de visibles/invisibles/ignorados antes de enviar la presencia inicial."
+::msgcat::mcset es "Activating privacy list failed: %s\n\nTry to reconnect. If problem persists, you may want to disable privacy list activation at start" "Falló la activación de lista de privacidad: %s\n\nIntenta reconectar. Si el problema persiste, quizá tengas que deshabilitar la activación de listas de privacidad al inicio"
 ::msgcat::mcset es "Active Chats" "Salas activas"
 ::msgcat::mcset es "Active" "Activa"
 ::msgcat::mcset es "Add ->" "Añadir ->"
+::msgcat::mcset es "Add Conference to Roster" "Añadir sala a la lista de contactos"
+::msgcat::mcset es "Add JID" "Añadir JID"
 ::msgcat::mcset es "Add chats group in roster." "Añadir temporalmente grupos de charla activos a la lista de contactos"
 ::msgcat::mcset es "Add conference to roster..." "Añadir conferencia..."
-::msgcat::mcset es "Add conference" "Añadir sala de charla"
 ::msgcat::mcset es "Add conference..." "Añadir charla en grupo..."
 ::msgcat::mcset es "Add group by regexp on JIDs..." "Crear grupo por regexp sobre JID..."
 ::msgcat::mcset es "Add item" "Añadir elemento"
-::msgcat::mcset es "Add JID" "Añadir JID"
 ::msgcat::mcset es "Add list" "Añadir lista"
 ::msgcat::mcset es "Add new user..." "Añadir nuevo usuario..."
 ::msgcat::mcset es "Add roster group by JID regexp" "Añadir grupo a la lista por regexp sobre JID"
@@ -87,9 +78,10 @@
 ::msgcat::mcset es "Alexey Shchepin" "Alexey Shchepin"
 ::msgcat::mcset es "All Files" "Todos los ficheros"
 ::msgcat::mcset es "All files" "Todos los ficheros"
+::msgcat::mcset es "All unread messages was forwarded to %s." "Todos los mensajes no leidos fueron reenviados a %s."
 ::msgcat::mcset es "All" "Todos"
 ::msgcat::mcset es "Allow downloading" "Permitir descargar"
-::msgcat::mcset es "Allow plaintext authentication mechanisms (when password 		   is transmitted unencrypted)." "Permitir mecanismos de autenticación de texto plano (de forma que la contraseña se transmite sin cifrar)."
+::msgcat::mcset es "Allow plaintext authentication mechanisms (when password is transmitted unencrypted)." "Permitir mecanismos de autenticación de texto plano (donde la contraseña se envía sin crifrar)."
 ::msgcat::mcset es "Allow plaintext authentication mechanisms" "Permitir mecanismos de autenticación de texto plano"
 ::msgcat::mcset es "An error occured when searching in %s\n\n%s" "Un error ocurrió buscando en %s\n\n%s"
 ::msgcat::mcset es "Announce" "Anunciar"
@@ -106,40 +98,39 @@
 ::msgcat::mcset es "Authentication successful" "Autenticación exitosa"
 ::msgcat::mcset es "Authentication" "Autenticación"
 ::msgcat::mcset es "Authors:" "Autores:"
-::msgcat::mcset es "auto-away" "auto-ausencia"
 ::msgcat::mcset es "Automatically away due to idle" "Automáticamente ausente debido a inactividad"
 ::msgcat::mcset es "Automatically join conference upon connect" "Entrar en la sala automáticamente al conectar"
 ::msgcat::mcset es "Available groups" "Grupos disponibles"
 ::msgcat::mcset es "Available presence" "Presencia: disponible"
 ::msgcat::mcset es "Available" "Disponible"
 ::msgcat::mcset es "Avatar" "Avatar"
-::msgcat::mcset es "avatars" "avatares"
 ::msgcat::mcset es "Away" "Ausente"
+::msgcat::mcset es "BBS:"
 ::msgcat::mcset es "Bad Format" "Mal Formato"
 ::msgcat::mcset es "Bad Namespace Prefix" "Mal Prefijo de Espacio de Nombres"
 ::msgcat::mcset es "Bad Request" "Mala petición"
-::msgcat::mcset es "balloon help" "ayuda contextual"
 ::msgcat::mcset es "Ban" "Bloquear"
-::msgcat::mcset es "BBS:"
 ::msgcat::mcset es "Begin date" "Fecha de inicio"
 ::msgcat::mcset es "Birthday" "Fecha de nacimiento"
 ::msgcat::mcset es "Birthday:" "Fecha de nacimiento:"
+::msgcat::mcset es "Blind carbon copy" "Copia carbon ciega (BCC)"
 ::msgcat::mcset es "Blocking communication (XMPP privacy lists) options." "Opciones para bloquear comunicaciones (listas de privacidad)."
 ::msgcat::mcset es "Blocking communication options." "Opciones de bloqueo de comunicación."
 ::msgcat::mcset es "Browse error: %s" "Error de exploración: %s"
 ::msgcat::mcset es "Browse" "Explorar"
 ::msgcat::mcset es "Browse..." "Explorar..."
 ::msgcat::mcset es "Browser" "Explorador"
-::msgcat::mcset es "browsing" "explorando"
-::msgcat::mcset es "bwidget workarounds" "arreglos de bwidget"
 ::msgcat::mcset es "Cache headlines on exit and restore on start." "Guardar titulares al terminar y recuperar al iniciar."
+::msgcat::mcset es "Cached service categories and types (from disco#info)." "Categorías de servicio y tipos cacheados (de disco#info)."
 ::msgcat::mcset es "Can't receive file: %s" "No se puede recibir fichero: %s"
 ::msgcat::mcset es "Cancel" " Cancelar "
+::msgcat::mcset es "Cannot connect to proxy" "No se puede conectar al proxy"
+::msgcat::mcset es "Cannot negotiate proxy connection" "No se puede negociar la conexión al proxy"
+::msgcat::mcset es "Carbon copy" "Copia carbon"
 ::msgcat::mcset es "Cell:" "Móvil:"
-::msgcat::mcset es "change message type to" "cambiar el tipo del mensaje a"
+::msgcat::mcset es "Change Presence Priority" "Cambiar Prioridad"
 ::msgcat::mcset es "Change password" "Cambiar contraseña"
 ::msgcat::mcset es "Change password..." "Cambiar contraseña..."
-::msgcat::mcset es "Change Presence Priority" "Cambiar Prioridad"
 ::msgcat::mcset es "Change priority..." "Cambiar prioridad..."
 ::msgcat::mcset es "Change security preferences for %s" "Cambiar las preferencias de seguridad para %s"
 ::msgcat::mcset es "Chat " "Charla "
@@ -164,49 +155,46 @@
 ::msgcat::mcset es "Clear" "Limpiar"
 ::msgcat::mcset es "Client" "Cliente"
 ::msgcat::mcset es "Client:" "Cliente:"
+::msgcat::mcset es "Close Tkabber" "Cerrar Tkabber"
 ::msgcat::mcset es "Close all tabs" "Cerrar todas las pestañas"
 ::msgcat::mcset es "Close other tabs" "Cerrar las otras pestañas"
 ::msgcat::mcset es "Close tab" "Cerrar pestaña"
-::msgcat::mcset es "Close Tkabber" "Cerrar Tkabber"
 ::msgcat::mcset es "Close" "Cerrar"
 ::msgcat::mcset es "Color message bodies in chat windows." "Color de los mensajes en las ventanas de charla"
-::msgcat::mcset es "Command to be runned when you click a URL in a message.  '%s' will be replaced with this URL (e.g. \"galeon -n %s\")." "Comando a ejecutar cuando pulsas una URL en un mensaje. Se reemplazará '%s' por la URL. Ejemplo: galeon -n %s"
+::msgcat::mcset es "Command to be runned when you click a URL in a message.  '%s' will be replaced with this URL (e.g. \"galeon -n %s\")." "Comando a ejecutar cuando se pulsa una URL en un mensaje.  Se reemplazará '%s' con la URL (e.g. \"galeon -n %s\")."
+::msgcat::mcset es "Commands" "Comandos"
 ::msgcat::mcset es "Complete nickname" "Completar apodo"
 ::msgcat::mcset es "Composing a reply" "Escribiendo una respuesta"
 ::msgcat::mcset es "Compression negotiation failed" "Falló la negociación de la compresión"
 ::msgcat::mcset es "Compression negotiation successful" "Negociación de la compresión exitosa"
 ::msgcat::mcset es "Compression setup failed" "Falló la configuración de compresión"
 ::msgcat::mcset es "Compression" "Compresión"
-::msgcat::mcset es "Computer" "Ordenador"
 ::msgcat::mcset es "Condition" "Condición"
-::msgcat::mcset es "Conference room %s will be destroyed 		       permanently.\n\nProceed?" "La sala de charla %s se destruirá permanentemente.\n\n¿Proceder?"
-::msgcat::mcset es "configuration" "configuración"
+::msgcat::mcset es "Conference room %s will be destroyed permanently.\n\nProceed?" "La sala de charla %s será destruida permanentemente.\n\n¿Proceder?"
+::msgcat::mcset es "Conference:" "Sala de charla"
 ::msgcat::mcset es "Configure form: %s" "Formulario de configuración: %s"
 ::msgcat::mcset es "Configure room" "Configurar sala"
 ::msgcat::mcset es "Configure service" "Configurar servicio"
 ::msgcat::mcset es "Conflict" "Conflicto"
+::msgcat::mcset es "Connect via HTTP polling" "Conectar via HTTP Polling"
 ::msgcat::mcset es "Connect via alternate server" "Conectar a través de servidor alternativo"
-::msgcat::mcset es "Connect via HTTP polling" "Conectar via HTTP Polling"
+::msgcat::mcset es "Connection Timeout" "Timeout en la Conexión"
 ::msgcat::mcset es "Connection closed" "Conexión cerrada"
-::msgcat::mcset es "Connection Timeout" "Timeout en la Conexión"
 ::msgcat::mcset es "Connection" "Conexión"
 ::msgcat::mcset es "Connection:" "Conexión:"
-::msgcat::mcset es "connections" "conexiones"
 ::msgcat::mcset es "Contact Information" "Información de contacto"
-::msgcat::mcset es "continue processing rules" "seguir procesando reglas"
 ::msgcat::mcset es "Convert screenname" "Convertir dirección de contacto"
 ::msgcat::mcset es "Convert" "Convertir"
+::msgcat::mcset es "Copy URL to clipboard" "Copiar URL al portapapeles"
 ::msgcat::mcset es "Copy headline to clipboard" "Copiar titular al portapapeles"
 ::msgcat::mcset es "Copy selection to clipboard" "Copiar selección al portapapeles"
-::msgcat::mcset es "Copy URL to clipboard" "Copiar URL al portapapeles"
 ::msgcat::mcset es "Correct word" "Corregir palabra"
 ::msgcat::mcset es "Country" "País"
 ::msgcat::mcset es "Country:" "País:"
 ::msgcat::mcset es "Create node" "Crear nodo"
 ::msgcat::mcset es "Created: %s" "Creado: %s"
-::msgcat::mcset es "Creating default privacy list failed: 					 %s\n\nTry to reconnect. If problem 					 persists, you may want to disable privacy 					 list activation at start" "Ocurrió un fallo al crear una lista de privacidad: 					 %s\n\nIntenta reconectar. Si el problema persiste, quizá quieras desactivar la activación automática de listas al conectar"
+::msgcat::mcset es "Creating default privacy list failed: %s\n\nTry to reconnect. If problem persists, you may want to disable privacy list activation at start" "Ocurrió un fallo al crear una lista de privacidad: %s\n\nIntenta reconectar. Si el problema persiste, quizá quieras desactivar la activación automática de listas al conectar"
 ::msgcat::mcset es "Creating default privacy list" "Creando lista de privacidad inicial"
-::msgcat::mcset es "cryptographics" "criptografía"
 ::msgcat::mcset es "Current groups" "Grupos actuales"
 ::msgcat::mcset es "Current" "Actual"
 ::msgcat::mcset es "Customization of the One True Jabber Client." "Personalización del Cliente de Jabber Verdadero."
@@ -214,9 +202,7 @@
 ::msgcat::mcset es "Data form" "Formulario de datos"
 ::msgcat::mcset es "Data purported sent by %s can't be deciphered.\n\n%s." "Datos supuestamente enviados por %s no pueden ser descifrados.\n\n%s."
 ::msgcat::mcset es "Date:" "Fecha:"
-::msgcat::mcset es "day" "dia"
 ::msgcat::mcset es "Day:" "Día:"
-::msgcat::mcset es "days" "dias"
 ::msgcat::mcset es "Default directory for downloaded files." "Directorio por defecto para la descarga de ficheros."
 ::msgcat::mcset es "Default message type (if not specified explicitly)." "Tipo de mensaje por defecto (si no se especifica explícitamente)."
 ::msgcat::mcset es "Default nested roster group delimiter." "Delimitador de grupos anidados en la lista de contactos."
@@ -236,10 +222,10 @@
 ::msgcat::mcset es "Discover service" "Descubrir servicio"
 ::msgcat::mcset es "Discovery" "Descubridor"
 ::msgcat::mcset es "Display %s in chat window when using /vcard command." "Mostrar %s en la ventana de charla al usar el comando /vcard."
+::msgcat::mcset es "Display SSL warnings." "Mostrar advertencias respecto a SSL."
 ::msgcat::mcset es "Display description of user status in chat windows." "Mostrar descripción del estado del usuario en la ventana de charla."
 ::msgcat::mcset es "Display headlines in single/multiple windows." "Mostrar titulares en un o muchas ventanas."
-::msgcat::mcset es "Display SSL warnings." "Mostrar advertencias respecto a SSL."
-::msgcat::mcset es "Display status tooltip when main window is minimized 		       to systray." "Mostrar mensajes de estado cuando la ventana está minimizada en la bandeja de sistema."
+::msgcat::mcset es "Display status tooltip when main window is minimized to systray." "Mostrar mensajes de estado cuando la ventana está minimizada en la bandeja de sistema."
 ::msgcat::mcset es "Do not display headline descriptions as tree nodes." "No mostrar descripciones de los titulares como nodos del árbol."
 ::msgcat::mcset es "Do not disturb" "No molestar"
 ::msgcat::mcset es "Do nothing" "No hacer nada"
@@ -250,6 +236,7 @@
 ::msgcat::mcset es "Edit admin list" "Editar la lista de Administradores"
 ::msgcat::mcset es "Edit ban list" "Editar la lista de Bloqueados"
 ::msgcat::mcset es "Edit chat user colors" "Editar colores de los usuarios"
+::msgcat::mcset es "Edit entities affiliations: %s" "Editar las afiliaciones de las entidades: %s"
 ::msgcat::mcset es "Edit groups for %s" "Editar grupos de %s"
 ::msgcat::mcset es "Edit ignore list " "Editar la lista de ignorados "
 ::msgcat::mcset es "Edit ignore list" "Editar la lista de ignorados"
@@ -275,29 +262,30 @@
 ::msgcat::mcset es "Edit voice list" "Editar la lista de Voces"
 ::msgcat::mcset es "Edit" "Editar"
 ::msgcat::mcset es "Email:" "Correo-e:"
-::msgcat::mcset es "emoticons" "emoticonos"
 ::msgcat::mcset es "Emphasize" "Enfatizar"
 ::msgcat::mcset es "Empty rule name" "Nombre de la regla vacío"
+::msgcat::mcset es "Enable HTTP transport for outgoing file transfers." "Activar transporte HTTP para transferencia de ficheros saliente"
+::msgcat::mcset es "Enable Jidlink transport %s." "Activar el transporte Jidlink %s."
+::msgcat::mcset es "Enable Jidlink transport for outgoing file transfers (it is obsolete)." "Activar transporte Jidlink para transferencias de fichero salientes (está obsoleto)."
+::msgcat::mcset es "Enable KDE tray icon." "Usar icono en la bandeja de sistema de KDE."
+::msgcat::mcset es "Enable SI transport %s." "Activar transporte SI %s."
+::msgcat::mcset es "Enable SI transport for outgoing file transfers." "Activar el transporte SI (Stream Initiation) para transferencias de fichero salientes."
 ::msgcat::mcset es "Enable chat window autoscroll only when last message is shown." "Activar desplazamiento automático sólo cuando se ha mostrado el último mensaje."
+::msgcat::mcset es "Enable freedesktop system tray icon." "Activar icono en bandeja de sistema Freedesktop"
 ::msgcat::mcset es "Enable freedesktop systray icon." "Activar el icono Freedesktop en la bandeja de sistema."
 ::msgcat::mcset es "Enable highlighting plugin." "Activar plugin de resaltado."
-::msgcat::mcset es "Enable HTTP transport for outgoing file transfers." "Activar transporte HTTP para transferencia de ficheros saliente"
 ::msgcat::mcset es "Enable jabberd 1.4 mod_filter support (obsolete)." "Activar soporte de jabberd 1.4 mod_filter (obsoleto)."
-::msgcat::mcset es "Enable Jidlink transport %s." "Activar el transporte Jidlink %s."
-::msgcat::mcset es "Enable Jidlink transport for outgoing file transfers (it is obsolete)." "Activar transporte Jidlink para transferencias de fichero salientes (está obsoleto)."
-::msgcat::mcset es "Enable KDE tray icon." "Usar icono en la bandeja de sistema de KDE."
 ::msgcat::mcset es "Enable messages emphasize." "Activar énfasis de los mensajes."
 ::msgcat::mcset es "Enable nested roster groups." "Activar grupos anidados en la lista de contactos."
+::msgcat::mcset es "Enable remote control." "Activar control remoto."
 ::msgcat::mcset es "Enable rendering of XHTML messages." "Mostrar los mensajes XHTML cuando sea posible."
 ::msgcat::mcset es "Enable sending chat message events." "Permitir el envío de eventos de mensaje de charla."
 ::msgcat::mcset es "Enable sending chat state notifications." "Permitir el envío de notificaciones de estado de la charla."
-::msgcat::mcset es "Enable SI transport %s." "Activar transporte SI %s."
-::msgcat::mcset es "Enable SI transport for outgoing file transfers." "Activar el transporte SI (Stream Initiation) para transferencias de fichero salientes."
 ::msgcat::mcset es "Enable windows tray icon." "Activar icono en la bandeja de sistema."
 ::msgcat::mcset es "Enabled\n" "Activado\n"
 ::msgcat::mcset es "Encrypt traffic" "Cifrar tráfico"
+::msgcat::mcset es "Encryption (STARTTLS)" "Cifrado (STARTTLS)"
 ::msgcat::mcset es "Encryption (legacy SSL)" "Cifrado (SSL antiguo)"
-::msgcat::mcset es "Encryption (STARTTLS)" "Cifrado (STARTTLS)"
 ::msgcat::mcset es "Enter screenname of contact you want to add" "Introduce no dirección del usuario que quieres añadir"
 ::msgcat::mcset es "Error %s" "Error %s"
 ::msgcat::mcset es "Error completing command: %s" "Error completando el comando: %s"
@@ -305,6 +293,7 @@
 ::msgcat::mcset es "Error executing command: %s" "Error ejecutando el comando: %s"
 ::msgcat::mcset es "Error getting info: %s" "Error consiguiendo información: %s"
 ::msgcat::mcset es "Error getting items: %s" "Error obteniendo elementos: %s"
+::msgcat::mcset es "Error in signature processing" "Error en el procesado de la firma"
 ::msgcat::mcset es "Error in signature verification software: %s." "Error en el software de verificación de firma: %s."
 ::msgcat::mcset es "Error negotiate: %s" "Error negociando: %s"
 ::msgcat::mcset es "Error requesting data: %s" "Error pidiendo datos: %s"
@@ -317,53 +306,54 @@
 ::msgcat::mcset es "Explicitly specify host and port to connect" "Especificar explícitamente máquina y puerto a la que conectar"
 ::msgcat::mcset es "Export roster..." "Exportar lista de contactos..."
 ::msgcat::mcset es "Export to XHTML" "Exportar a XHTML"
+::msgcat::mcset es "Extended addressing fields:" "Campos de direccionamento extendido:"
 ::msgcat::mcset es "Extended away" "Muy ausente"
-::msgcat::mcset es "extension management" "gestión de extensiones"
 ::msgcat::mcset es "External program, which is to be executed to play sound. If empty, Snack library is used (if available) to play sound." "Programa externo que se ejecutará para reproducir el sonido. Si se deja vacío, se usará la libreria Snack si está disponible."
 ::msgcat::mcset es "Extras from %s" "Extras de %s"
 ::msgcat::mcset es "Extras from:" "Extras de:"
 ::msgcat::mcset es "Failed to connect: %s" "Falló al conectar: %s"
+::msgcat::mcset es "Failed to open file \"%s\".\nThe error was: %s" "Falló al abrir el fichero \"%s\".\nEl error fué: %s"
 ::msgcat::mcset es "Family Name" "Apellido"
 ::msgcat::mcset es "Family Name:" "Apellido:"
 ::msgcat::mcset es "Fax:" "Fax:"
 ::msgcat::mcset es "Feature Not Implemented" "Característica no implementada"
+::msgcat::mcset es "Fetch GPG key" "Conseguir clave GPG"
 ::msgcat::mcset es "Fetch all messages" "Recuperar todos los mensajes"
-::msgcat::mcset es "Fetch GPG key" "Conseguir clave GPG"
 ::msgcat::mcset es "Fetch message" "Recuperar mensaje"
 ::msgcat::mcset es "Fetch unseen messages" "Recuperar mensajes no vistos"
+::msgcat::mcset es "File Transfer options." "Opciones de transferencia de ficheros."
 ::msgcat::mcset es "File not found or not regular file: %s" "Fichero no encontrado o no es un fichero regular: %s"
 ::msgcat::mcset es "File to send:" "Fichero para enviar:"
-::msgcat::mcset es "File Transfer options." "Opciones de transferencia de ficheros."
-::msgcat::mcset es "file transfer" "transferencia de ficheros"
+::msgcat::mcset es "File transfer error" "Error en la transferencia del fichero"
 ::msgcat::mcset es "Filters" "Filtros"
 ::msgcat::mcset es "Finish" "Terminar"
 ::msgcat::mcset es "First Name:" "Nombre:"
 ::msgcat::mcset es "Font to use in roster, chat windows etc." "Fuente para usar en la lista de contactos, etc."
 ::msgcat::mcset es "Forbidden" "Prohibido"
 ::msgcat::mcset es "Format of timestamp in delayed chat messages delayed for more than 24 hours." "Formato de los tiempos en mensajes de charla retrasados por más de 24 horas."
-::msgcat::mcset es "Format of timestamp in headline tree view. Set to 		       empty string if you don't want to see timestamps." "Formato de fecha en la vista de árbol de los titulares. Si no quieres ver la fecha déjalo vacío."
+::msgcat::mcset es "Format of timestamp in headline tree view. Set to empty string if you don't want to see timestamps." "Formato de fecha en la vista de árbol de los titulares. Si no quieres ver la fecha déjalo vacío."
 ::msgcat::mcset es "Forward headline" "Reenviar titular"
-::msgcat::mcset es "forward message to" "reenviar el mensaje a"
 ::msgcat::mcset es "Forward to %s" "Reenviar a %s"
 ::msgcat::mcset es "Forward..." "Reenviar..."
+::msgcat::mcset es "Forwarded by:" "Reenviado por:"
 ::msgcat::mcset es "Free to chat" "Disponible para charlar"
 ::msgcat::mcset es "From/To" "De/Para"
 ::msgcat::mcset es "From: " "De: "
 ::msgcat::mcset es "From:" "De:"
 ::msgcat::mcset es "Full Name" "Nombre completo"
 ::msgcat::mcset es "Full Name:" "Nombre completo:"
-::msgcat::mcset es "Generate event messages in MUC compatible 		       conference rooms." "Generar mensajes de eventos en salas de charla MUC."
+::msgcat::mcset es "GIF images" "GIF"
+::msgcat::mcset es "GPG-encrypt outgoing messages where possible." "Cifrar con GPG los mensajes salientes siempre que sea posible."
+::msgcat::mcset es "GPG-sign outgoing messages and presence updates." "Firmar con GPG los mensajes y presencias salientes."
+::msgcat::mcset es "GPGME options (signing and encryption)." "Opciones de GPGME (firma y cifrado)."
+::msgcat::mcset es "Generate event messages in MUC compatible conference rooms." "Generar mensajes de eventos en salas de charla MUC."
 ::msgcat::mcset es "Generate event messages" "Generar mensajes de evento"
 ::msgcat::mcset es "Generic IQ" "IQ genérico"
 ::msgcat::mcset es "Geographical position" "Posición geográfica"
 ::msgcat::mcset es "Get items" "Coger elementos"
-::msgcat::mcset es "GIF images" "GIF"
 ::msgcat::mcset es "Gone" "Ido"
 ::msgcat::mcset es "Google selection" "Selección Google"
 ::msgcat::mcset es "Got roster" "Se consiguió la lista de contactos"
-::msgcat::mcset es "GPG-encrypt outgoing messages where possible." "Cifrar con GPG los mensajes salientes siempre que sea posible."
-::msgcat::mcset es "GPG-sign outgoing messages and presence updates." "Firmar con GPG los mensajes y presencias salientes."
-::msgcat::mcset es "GPGME options (signing and encryption)." "Opciones de GPGME (firma y cifrado)."
 ::msgcat::mcset es "Grant Admin Privileges" "Conceder privilegios de Administrador"
 ::msgcat::mcset es "Grant Membership" "Conceder Membresía"
 ::msgcat::mcset es "Grant Moderator Privileges" "Conceder privilegios de Moderador"
@@ -372,6 +362,12 @@
 ::msgcat::mcset es "Group: " "Grupo: "
 ::msgcat::mcset es "Group:" "Grupo:"
 ::msgcat::mcset es "Groupchat message highlighting plugin options." "Opciones del plugin de resaltado de mensajes en salas de charla."
+::msgcat::mcset es "HTTP Poll"
+::msgcat::mcset es "HTTP options." "Opciones HTTP."
+::msgcat::mcset es "HTTP proxy address." "Dirección del proxy HTTP."
+::msgcat::mcset es "HTTP proxy password." "Contraseña del proxy HTTP."
+::msgcat::mcset es "HTTP proxy port." "Puerto del proxy HTTP."
+::msgcat::mcset es "HTTP proxy username." "Usuario del proxy HTTP."
 ::msgcat::mcset es "Handshake failed" "Handshake falló"
 ::msgcat::mcset es "Handshake successful" "Handshake exitoso"
 ::msgcat::mcset es "Headline message" "Mensaje de titular"
@@ -386,20 +382,16 @@
 ::msgcat::mcset es "Host Gone" "Host No Disponible"
 ::msgcat::mcset es "Host Unknown" "Host Desconocido"
 ::msgcat::mcset es "Host:" "Máquina:"
-::msgcat::mcset es "hour" "hora"
-::msgcat::mcset es "hours" "horas"
-::msgcat::mcset es "HTTP options." "Opciones HTTP."
-::msgcat::mcset es "HTTP Poll"
-::msgcat::mcset es "HTTP proxy address." "Dirección del proxy HTTP."
-::msgcat::mcset es "HTTP proxy password." "Contraseña del proxy HTTP."
-::msgcat::mcset es "HTTP proxy port." "Puerto del proxy HTTP."
-::msgcat::mcset es "HTTP proxy username." "Usuario del proxy HTTP."
 ::msgcat::mcset es "I'm not online" "No estoy conectado"
+::msgcat::mcset es "IP address:" "Dirección IP:"
+::msgcat::mcset es "IQ" "IQ"
+::msgcat::mcset es "ISDN:" "RDSI:"
 ::msgcat::mcset es "Iconize" "Iconizar"
 ::msgcat::mcset es "Idle for %s" "Inactivo durante %s"
 ::msgcat::mcset es "Idle threshold in minutes after that Tkabber marks you as away." "Intervalo de inactividad tras el cual Tkabber te cambia a 'ausente'"
 ::msgcat::mcset es "Idle threshold in minutes after that Tkabber marks you as extended away." "Intervalo de inactividad tras el cual Tkabber te cambia a 'muy ausente'."
 ::msgcat::mcset es "Ignore list" "Lista de ignorados"
+::msgcat::mcset es "Illegal result" "Resultado ilegal"
 ::msgcat::mcset es "Image" "Imagen"
 ::msgcat::mcset es "Import roster..." "Importar lista de contactos..."
 ::msgcat::mcset es "Improper Addressing" "Dirección Incorrecta"
@@ -413,13 +405,13 @@
 ::msgcat::mcset es "Interval (in minutes) after error reply on request of participants list." "Intervalo (en minutos) si la respuesta a una petición de lista de participantes da error."
 ::msgcat::mcset es "Interval (in minutes) between requests of participants list." "Intervalo (en minutos) entre peticiones de la lista de participantes."
 ::msgcat::mcset es "Interval:" "Intervalo:"
-::msgcat::mcset es "Invalid authzid" "Authzid incorrecta"
 ::msgcat::mcset es "Invalid From" "Remitente Inválido"
 ::msgcat::mcset es "Invalid ID" "ID Inválido"
-::msgcat::mcset es "Invalid mechanism" "Mecanismo incorrecto"
 ::msgcat::mcset es "Invalid Namespace" "Espacio de Nombres Inválido"
-::msgcat::mcset es "invalid userstatus value " "valor de estado de usuario inválido "
 ::msgcat::mcset es "Invalid XML" "XML Inválido"
+::msgcat::mcset es "Invalid authzid" "Authzid incorrecta"
+::msgcat::mcset es "Invalid mechanism" "Mecanismo incorrecto"
+::msgcat::mcset es "Invalid signature" "Firma inválida"
 ::msgcat::mcset es "Invisible list" "Lista de invisibles"
 ::msgcat::mcset es "Invisible" "Invisible"
 ::msgcat::mcset es "Invite %s to conferences" "Invitar a %s a charla en grupo"
@@ -428,28 +420,19 @@
 ::msgcat::mcset es "Invite users..." "Invitar usuarios..."
 ::msgcat::mcset es "Invite" " Invitar "
 ::msgcat::mcset es "Invited to:" "Invitado a:"
-::msgcat::mcset es "IP address:" "Dirección IP:"
-::msgcat::mcset es "IQ" "IQ"
-::msgcat::mcset es "is now" "está ahora"
-::msgcat::mcset es "ISDN:" "RDSI:"
 ::msgcat::mcset es "Ispell dictionary encoding. If it is empty, system encoding is used." "Codificación del diccionario ispell. Si está vacío se utlizará la codificación del sistema."
 ::msgcat::mcset es "Ispell dictionary. If it is empty, default dictionary is used." "Diccionario ispell. Si está vacío, se utilizará el diccionario por defecto."
 ::msgcat::mcset es "Issuer" "Emisor"
 ::msgcat::mcset es "Item Not Found" "Elemento no encontrado"
-::msgcat::mcset es "Jabber Browser" "Explorador Jabber"
-::msgcat::mcset es "jabber chat" "charla Jabber"
-::msgcat::mcset es "jabber groupchats" "charlas en grupo Jabber"
-::msgcat::mcset es "jabber iq" "Jabber iq"
-::msgcat::mcset es "jabber presence" "presencia Jabber"
-::msgcat::mcset es "jabber registration" "registro Jabber"
-::msgcat::mcset es "jabber xml" "Jabber XML"
 ::msgcat::mcset es "JID Malformed" "JID mal formado"
 ::msgcat::mcset es "JID regexp:" "JID regexp:"
 ::msgcat::mcset es "JID" "JID"
 ::msgcat::mcset es "JID:" "JID:"
+::msgcat::mcset es "JPEG images" "JPEG"
+::msgcat::mcset es "Jabber Browser" "Explorador Jabber"
+::msgcat::mcset es "Jabber ID" "Jabber ID"
 ::msgcat::mcset es "Jidlink connection closed" "Conexión Jidlink cerrada"
 ::msgcat::mcset es "Jidlink options." "Opciones Jidlink."
-::msgcat::mcset es "jidlink" "jidlink"
 ::msgcat::mcset es "Join conference" "Unirse a la conferencia"
 ::msgcat::mcset es "Join group dialog data (groups)." "Datos del diálogo de entrada en sala (grupos)."
 ::msgcat::mcset es "Join group dialog data (nicks)." "Datos del diálogo de entrada en sala (apodos)."
@@ -459,26 +442,23 @@
 ::msgcat::mcset es "Join groupchat" "Unirse a la sala de charla"
 ::msgcat::mcset es "Join" "Entrar"
 ::msgcat::mcset es "Join..." "Entrar..."
-::msgcat::mcset es "JPEG images" "JPEG"
-::msgcat::mcset es "kde"
 ::msgcat::mcset es "Keep trying" "Seguir intentándolo"
 ::msgcat::mcset es "Key ID" "ID de la llave"
 ::msgcat::mcset es "Key:" "Llave:"
 ::msgcat::mcset es "Kick" "Expulsar"
-::msgcat::mcset es "last %s%s: %s" "último %s%s: %s"
-::msgcat::mcset es "last %s%s:" "último %s%s:"
 ::msgcat::mcset es "Last Activity or Uptime" "Última actividad o tiempo en marcha"
+::msgcat::mcset es "Last Name:" "Apellido:"
 ::msgcat::mcset es "Last activity" "Última actividad"
-::msgcat::mcset es "Last Name:" "Apellido:"
 ::msgcat::mcset es "Latitude" "Latitud"
 ::msgcat::mcset es "Latitude:" "Latitud:"
 ::msgcat::mcset es "List name" "Listar nombre"
+::msgcat::mcset es "List of JIDs to whom headlines have been sent." "Lista de JID a los que se ha enviado titulares de noticia."
 ::msgcat::mcset es "List of browsed JIDs." "Lista de JIDs explorados."
 ::msgcat::mcset es "List of discovered JID nodes." "Lista de nodos JID descubiertos."
 ::msgcat::mcset es "List of discovered JIDs." "Lista de JIDs descubiertos."
-::msgcat::mcset es "List of JIDs to whom headlines have been sent." "Lista de JID a los que se ha enviado titulares de noticia."
 ::msgcat::mcset es "List of logout reasons." "Lista de razones de cierre de sesión."
 ::msgcat::mcset es "List of message destination JIDs." "Lista de los JID destinatarios."
+::msgcat::mcset es "List of proxy servers for SOCKS5 bytestreams (all available servers will be tried for mediated connection)." "Lista de servidores proxy para SOCKS5 bytestreams (todos los servidores disponibles serán probados para una conexión mediada)."
 ::msgcat::mcset es "List of users for chat." "Lista de usuarios para la charla."
 ::msgcat::mcset es "List of users for userinfo." "Lista de usuarios para userinfo."
 ::msgcat::mcset es "Load Image" "Cargar imagen"
@@ -495,16 +475,19 @@
 ::msgcat::mcset es "Logout" "Cerrar sesión"
 ::msgcat::mcset es "Longitude" "Longitud"
 ::msgcat::mcset es "Longitude:" "Longitud:"
+::msgcat::mcset es "MUC" "MUC"
 ::msgcat::mcset es "Main window:" "Ventana principal:"
+::msgcat::mcset es "Malformed signature block" "Bloque de firma mal formado"
 ::msgcat::mcset es "Manually edit rules" "Editar reglas manualmente"
 ::msgcat::mcset es "Mark all seen" "Marcar todos como leidos"
 ::msgcat::mcset es "Mark all unseen" "Marcar todos como no leidos"
 ::msgcat::mcset es "Marshall T. Rose" "Marshall T. Rose"
-::msgcat::mcset es "Match case while searching in log window." "Hacer coincidencia mayúsculas/minúsculas al buscar en la ventana de historial."
-::msgcat::mcset es "Maximum number of characters in the history in MUC 		       compatible conference rooms." "Máximo número de caracteres en el historial de las salas de charla MUC."
-::msgcat::mcset es "Maximum number of stanzas in the history in MUC 		       compatible conference rooms." "Máximo número de mensajes en el historial de las salas de charla MUC."
+::msgcat::mcset es "Match case while searching in chat, log or disco windows." "Hacer coincidencia mayúsculas/minúsculas al buscar."
+::msgcat::mcset es "Maximum number of characters in the history in MUC compatible conference rooms." "Máximo número de caracteres en el historial de las salas de charla MUC."
+::msgcat::mcset es "Maximum number of stanzas in the history in MUC compatible conference rooms." "Máximo número de mensajes en el historial de las salas de charla MUC."
 ::msgcat::mcset es "Maximum poll interval." "Intervalo máximo de Poll."
 ::msgcat::mcset es "Mechanism too weak" "Mecanismo demasiado débil"
+::msgcat::mcset es "Message Recorder:" "Contestador:"
 ::msgcat::mcset es "Message and Headline options." "Opciones de Mensaje y Titulares."
 ::msgcat::mcset es "Message archive" "Archivo de mensajes"
 ::msgcat::mcset es "Message body" "Cuerpo del mensaje"
@@ -512,23 +495,18 @@
 ::msgcat::mcset es "Message delivered" "Mensaje entregado"
 ::msgcat::mcset es "Message displayed to %s" "Mensaje mostrado a %s"
 ::msgcat::mcset es "Message displayed" "Mensaje mostrado"
-::msgcat::mcset es "message filters" "filtros de mensajes"
 ::msgcat::mcset es "Message from %s" "Mensaje de %s"
 ::msgcat::mcset es "Message from:" "Mensaje de:"
-::msgcat::mcset es "Message Recorder:" "Contestador:"
 ::msgcat::mcset es "Message stored on %s's server" "Mensaje guardado en el servidor de %s"
 ::msgcat::mcset es "Message stored on the server" "Mensaje guardado en el servidor"
 ::msgcat::mcset es "Message" "Mensaje"
-::msgcat::mcset es "message/headline" "mensaje/titular"
 ::msgcat::mcset es "Messages" "Mensajes"
 ::msgcat::mcset es "Michail Litvak" "Michail Litvak"
 ::msgcat::mcset es "Middle Name" "Segundo nombre"
 ::msgcat::mcset es "Middle Name:" "Segundo nombre:"
-::msgcat::mcset es "Minimize to systray (if systray 					     icon is enabled, otherwise do nothing)" "Minimizar a la bandeja del sistema (si esto es posible, en otro caso no hacer nada)"
+::msgcat::mcset es "Minimize to systray (if systray icon is enabled, otherwise do nothing)" "Minimizar a la bandeja del sistema (si esto es posible, en otro caso no hacer nada)"
 ::msgcat::mcset es "Minimize" "Minimizar"
 ::msgcat::mcset es "Minimum poll interval." "Intervalo mínimo de Poll."
-::msgcat::mcset es "minute" "minuto"
-::msgcat::mcset es "minutes" "minutos"
 ::msgcat::mcset es "Misc:" "Misc:"
 ::msgcat::mcset es "Modem:" "Modem:"
 ::msgcat::mcset es "Moderators" "Moderadores"
@@ -538,19 +516,16 @@
 ::msgcat::mcset es "Move tab left/right" "Mover pestaña a izquierda/derecha"
 ::msgcat::mcset es "Move up" "Desplazar arriba"
 ::msgcat::mcset es "Moving to extended away" "Pasando a muy ausente"
-::msgcat::mcset es "MUC" "MUC"
-::msgcat::mcset es "multi-user chat" "charlas multi-usuario"
+::msgcat::mcset es "Multiple signatures having different authenticity" "Múltiples firmas con diferentes autenticidades"
 ::msgcat::mcset es "Mute sound if Tkabber window is focused." "Enmudecer el sonido si la ventana de Tkabber tiene el foco."
 ::msgcat::mcset es "Mute sound notification." "Enmudecer la notificación sonora."
 ::msgcat::mcset es "Mute sound when displaying delayed groupchat messages." "Enmudecer el sonido de mensajes de charla en grupo con retraso."
 ::msgcat::mcset es "Mute sound when displaying delayed personal chat messages." "Enmudecer el sonido de mensajes de charla privada con retraso."
 ::msgcat::mcset es "Mute sound" "Desactivar sonidos"
-::msgcat::mcset es "my status is" "mi estado es"
 ::msgcat::mcset es "Name " "Nombre "
 ::msgcat::mcset es "Name" "Nombre"
 ::msgcat::mcset es "Name: " "Nombre: "
 ::msgcat::mcset es "Name:" "Nombre:"
-::msgcat::mcset es "negotiation" "negociación"
 ::msgcat::mcset es "New group name:" "Nuevo nombre del grupo:"
 ::msgcat::mcset es "New password:" "Contraseña nueva:"
 ::msgcat::mcset es "New passwords do not match" "Las contraseñas nuevas no coinciden"
@@ -565,7 +540,8 @@
 ::msgcat::mcset es "No avatar to store" "No hay avatar para guardar"
 ::msgcat::mcset es "No conferences for %s in progress..." "No hay conferencias para %s actualmente..."
 ::msgcat::mcset es "No default list" "No hay lista por defecto"
-::msgcat::mcset es "no mechanism available" "no hay ningún mecanismo disponible"
+::msgcat::mcset es "No information available" "No hay información disponible"
+::msgcat::mcset es "No reply" "No responder"
 ::msgcat::mcset es "No users in %s roster..." "No hay usuarios en la lista de contactos de %s..."
 ::msgcat::mcset es "No users in roster..." "No hay usuarios en la lista..."
 ::msgcat::mcset es "Node" "Nodo"
@@ -579,11 +555,12 @@
 ::msgcat::mcset es "Not logged in" "No conectado"
 ::msgcat::mcset es "Notes" "Notas"
 ::msgcat::mcset es "Notify only when available" "Notificar solo cuando estoy disponible"
+::msgcat::mcset es "Number of HTTP poll client security keys to send before creating new key sequence." "Número de claves de seguridad del cliente de HTTP Poll qu se envian antes de crear una nueva secuencia de clave."
 ::msgcat::mcset es "Number of children:" "Número de hijos:"
 ::msgcat::mcset es "Number of groupchat messages to expire nick completion according to the last personally addressed message." "Número de mensajes en la sala de charla desde que un participante salió a partir del cual ya no se completa su apodo."
-::msgcat::mcset es "Number of HTTP poll client security keys to send before creating new key sequence." "Número de claves de seguridad del cliente de HTTP Poll qu se envian antes de crear una nueva secuencia de clave."
+::msgcat::mcset es "OK" " Aceptar "
+::msgcat::mcset es "OS:" "SO:"
 ::msgcat::mcset es "Offline Messages" "Mensajes diferidos"
-::msgcat::mcset es "OK" " Aceptar "
 ::msgcat::mcset es "Old password is incorrect" "La contraseña antigua es incorrecta"
 ::msgcat::mcset es "Old password:" "Contraseña antigua:"
 ::msgcat::mcset es "One window per bare JID" "Una ventana por JID simple"
@@ -596,18 +573,24 @@
 ::msgcat::mcset es "Opening DTCP active connection" "Abriendo conexión activa DTCP"
 ::msgcat::mcset es "Opening DTCP passive connection" "Abriendo conexión pasiva DTCP"
 ::msgcat::mcset es "Opening IBB connection" "Abriendo conexión IBB"
+::msgcat::mcset es "Opening IQ-IBB connection" "Abrir conexión IQ-IBB"
 ::msgcat::mcset es "Opening Jidlink connection" "Abriendo conexión Jidlink"
 ::msgcat::mcset es "Opening SI connection" "Abriendo conexión SI"
 ::msgcat::mcset es "Opening SOCKS5 listening socket" "Abriendo socket de escucha SOCKS5"
 ::msgcat::mcset es "Options for Conference Info module, that allows you to see list of participants in roster popup, regardless of whether you are currently joined with the conference." "Opciones para el módulo 'Información de Conferencias', que te permite ver la lista de participantes en las salas de conferencia de tu lista de contactos con un popup, sin necesidad de que participes ellas."
+::msgcat::mcset es "Options for Raw XML Input module, which allows you to monitor incoming/outgoing traffic from connection to server and send custom XML stanzas." "Opciones para el módulo 'XML Crudo', que te permite monitorizar tráfico de entrada/salida en la conexión con el servidor y enviar tus propios mensajes XML."
 ::msgcat::mcset es "Options for external play program" "Opciones para el programa de reproducción externo"
 ::msgcat::mcset es "Options for main interface." "Opciones del interfaz principal."
 ::msgcat::mcset es "Options for module that automatically marks you as away after idle threshold." "Opciones del módulo 'Autoausencia', que te cambia a 'ausente' automáticamente después de un tiempo de inactividad."
-::msgcat::mcset es "Options for Raw XML Input module, which allows you to monitor incoming/outgoing traffic from connection to server and send custom XML stanzas." "Opciones para el módulo 'XML Crudo', que te permite monitorizar tráfico de entrada/salida en la conexión con el servidor y enviar tus propios mensajes XML."
 ::msgcat::mcset es "Organization Name" "Nombre de la organización"
 ::msgcat::mcset es "Organization Unit" "Unidad de la organización"
 ::msgcat::mcset es "Organization" "Organización"
-::msgcat::mcset es "OS:" "SO:"
+::msgcat::mcset es "Original from" "Original de"
+::msgcat::mcset es "Original to" "Original para"
+::msgcat::mcset es "Outcast" "Bloquear"
+::msgcat::mcset es "Owner" "Propietario"
+::msgcat::mcset es "PCS:"
+::msgcat::mcset es "PNG images" "PNG"
 ::msgcat::mcset es "Pager:" "Busca:"
 ::msgcat::mcset es "Parent group" "Grupo padre"
 ::msgcat::mcset es "Parent groups" "Grupos padres"
@@ -620,7 +603,7 @@
 ::msgcat::mcset es "Path to the ispell executable." "Ruta para el ejecutable de ispell."
 ::msgcat::mcset es "Paused a reply" "Se pausó una respuesta"
 ::msgcat::mcset es "Payment Required" "Se requiere pago"
-::msgcat::mcset es "PCS:"
+::msgcat::mcset es "Pending" "Pendiente"
 ::msgcat::mcset es "Periodically browse roster conferences" "Inspeccionar periódicamente salas de charla de la lista"
 ::msgcat::mcset es "Personal " "Personal "
 ::msgcat::mcset es "Personal" "Personal"
@@ -631,8 +614,8 @@
 ::msgcat::mcset es "Phone ISDN" "Teléfono ISDN"
 ::msgcat::mcset es "Phone Message Recorder" "Teléfono del grabador de mensajes"
 ::msgcat::mcset es "Phone Modem" "Teléfono del módem"
+::msgcat::mcset es "Phone PCS" "Teléfono PCS"
 ::msgcat::mcset es "Phone Pager" "Teléfono Pager"
-::msgcat::mcset es "Phone PCS" "Teléfono PCS"
 ::msgcat::mcset es "Phone Preferred" "Teléfono preferido"
 ::msgcat::mcset es "Phone Video" "Teléfono video"
 ::msgcat::mcset es "Phone Voice" "Teléfono de voz"
@@ -645,10 +628,8 @@
 ::msgcat::mcset es "Please enter passphrase" "Por favor, introduce la frase clave"
 ::msgcat::mcset es "Please join %s" "Por favor, entra en %s"
 ::msgcat::mcset es "Please try again" "Por favor, vuélvelo a intentar"
-::msgcat::mcset es "plugin management" "gestión de plugins"
 ::msgcat::mcset es "Plugins options." "Opciones de plugins."
 ::msgcat::mcset es "Plugins" "Plugins"
-::msgcat::mcset es "PNG images" "PNG"
 ::msgcat::mcset es "Policy Violation" "Violación de la Política"
 ::msgcat::mcset es "Port:" "Puerto:"
 ::msgcat::mcset es "Postal Code" "Código Postal"
@@ -657,13 +638,13 @@
 ::msgcat::mcset es "Prefix" "Prefijo"
 ::msgcat::mcset es "Prefix:" "Prefijo:"
 ::msgcat::mcset es "Presence bar" "Barra de presencia"
+::msgcat::mcset es "Presence information" "Información de presencia"
 ::msgcat::mcset es "Presence is signed" "La presencia está firmada"
 ::msgcat::mcset es "Presence" "Presencia"
-::msgcat::mcset es "presence" "presencia"
 ::msgcat::mcset es "Presence-in" "Presencia-entra"
 ::msgcat::mcset es "Presence-out" "Presencia-sale"
+::msgcat::mcset es "Pretty print XML" "Mostrar XML bonito"
 ::msgcat::mcset es "Pretty print incoming and outgoing XML stanzas." "Mostrar el XML bonito para las stanzas XML."
-::msgcat::mcset es "Pretty print XML" "Mostrar XML bonito"
 ::msgcat::mcset es "Prev bookmark" "Marcador anterior"
 ::msgcat::mcset es "Prev highlighted" "Resaltado anterior"
 ::msgcat::mcset es "Prev" "Prev"
@@ -679,12 +660,11 @@
 ::msgcat::mcset es "Privacy lists error" "Error en las listas de privacidad"
 ::msgcat::mcset es "Privacy lists" "Listas de privacidad"
 ::msgcat::mcset es "Privacy rules" "Reglas de privacidad"
-::msgcat::mcset es "privacy rules" "reglas de privacidad"
 ::msgcat::mcset es "Profile on" "Perfil"
 ::msgcat::mcset es "Profile report" "Informe de perfil"
 ::msgcat::mcset es "Profile" "Perfil"
 ::msgcat::mcset es "Profiles" "Perfiles"
-::msgcat::mcset es "Propose to configure newly created MUC room. 		       If set to false then the default room configuration 		       is automatically accepted." "Proponer configurar la sala de charla MUC recien creada. 		       Si se desactiva esta opción la configuración por defecto de la sala 		       se aceptará automáticamente."
+::msgcat::mcset es "Propose to configure newly created MUC room. If set to false then the default room configuration is automatically accepted." "Proponer configurar la sala de charla MUC recien creada. Si se desactiva esta opción la configuración por defecto de la sala se aceptará automáticamente."
 ::msgcat::mcset es "Proxy Login:" "Usuario del Proxy:"
 ::msgcat::mcset es "Proxy Password:" "Contraseña del Proxy:"
 ::msgcat::mcset es "Proxy Port:" "Puerto del Proxy:"
@@ -692,6 +672,7 @@
 ::msgcat::mcset es "Proxy" "Proxy"
 ::msgcat::mcset es "Pub/sub" "Pub/sub"
 ::msgcat::mcset es "Publish node" "Publicar nodo"
+::msgcat::mcset es "Publisher" "Piblicador"
 ::msgcat::mcset es "Purge all messages" "Purgar todos los mensajes"
 ::msgcat::mcset es "Purge message" "Purgar mensaje"
 ::msgcat::mcset es "Purge seen messages" "Purgar mensajes vistos"
@@ -714,14 +695,15 @@
 ::msgcat::mcset es "Redo" "Rehacer"
 ::msgcat::mcset es "Register in %s" "Registrarse en %s"
 ::msgcat::mcset es "Register" "Registrar"
+::msgcat::mcset es "Registration Required" "Registro requerido"
 ::msgcat::mcset es "Registration failed: %s" "El registro ha fallado: %s"
 ::msgcat::mcset es "Registration is successful!" "¡Registro exitoso!"
 ::msgcat::mcset es "Registration is successful!" "¡Registro satisfactorio!"
-::msgcat::mcset es "Registration Required" "Registro requerido"
 ::msgcat::mcset es "Registration: %s" "Registro: %s"
 ::msgcat::mcset es "Remote Connection Failed" "Fallo en la Conexión Remota"
 ::msgcat::mcset es "Remote Server Not Found" "Servidor remoto no encontrado"
 ::msgcat::mcset es "Remote Server Timeout" "Intervalo de espera sobrepasado esperando al Servidor remoto"
+::msgcat::mcset es "Remote control options." "Opciones de control remoto."
 ::msgcat::mcset es "Remove all users in group..." "Eliminar todos los usuarios del grupo..."
 ::msgcat::mcset es "Remove from list" "Eliminar de la lista"
 ::msgcat::mcset es "Remove from roster..." "Borrar contacto..."
@@ -737,13 +719,14 @@
 ::msgcat::mcset es "Reply subject:" "Tema de la respuesta:"
 ::msgcat::mcset es "Reply to current time (jabber:iq:time) requests." "Responder las peticiones sobre el tiempo actual (jabber:iq:time)."
 ::msgcat::mcset es "Reply to idle time (jabber:iq:last) requests." "Responder a peticiones sobre el tiempo que llevas ausente (jabber:iq:last)."
+::msgcat::mcset es "Reply to room" "Responder a la sala"
 ::msgcat::mcset es "Reply to version (jabber:iq:version) requests." "Responder a las peticiones sobre la versión del programa (jabber:iq:version)."
-::msgcat::mcset es "reply with" "responder con"
+::msgcat::mcset es "Reply to" "Responder a"
 ::msgcat::mcset es "Reply" "Responder"
-::msgcat::mcset es "Report the list of current MUC rooms on 		       disco#items query." "Mostrar la lista de salas de charla MUC actuales en peticiones disco#items."
+::msgcat::mcset es "Report the list of current MUC rooms on disco#items query." "Mostrar la lista de salas de charla MUC actuales en peticiones disco#items."
 ::msgcat::mcset es "Request Error" "Error en la petición"
 ::msgcat::mcset es "Request failed: %s" "Petición fallida: %s"
-::msgcat::mcset es "Request only unseen (which aren't displayed in the 		       chat window) messages in the history in MUC compatible 		       conference rooms." "Solicitar solo mensajes del historial de las salas de charla MUC que no se hayan visto (que no se muestran en la ventana de la charla."
+::msgcat::mcset es "Request only unseen (which aren't displayed in the chat window) messages in the history in MUC compatible conference rooms." "Solicitar solo mensajes del historial de las salas de charla MUC que no se hayan visto (que no se muestran en la ventana de la charla."
 ::msgcat::mcset es "Request" "Petición"
 ::msgcat::mcset es "Requesting filter rules: %s" "Solicitando reglas de filtrado: %s"
 ::msgcat::mcset es "Requesting ignore list: %s" "Solicitando la lista de ignorados: %s"
@@ -777,18 +760,30 @@
 ::msgcat::mcset es "Room is created" "Se ha creado la sala"
 ::msgcat::mcset es "Room is destroyed" "Se ha destruido la sala"
 ::msgcat::mcset es "Roster Files" "Archivos de lista de contactos"
+::msgcat::mcset es "Roster Notes" "Notas"
+::msgcat::mcset es "Roster group:" "Grupo de contactos:"
 ::msgcat::mcset es "Roster item may be dropped not only over group name but also over any item in group." "Al coger y arrastra elementos de la lista de contactos, se les puede soltar en cualquie parte de un grupo, no solo sobre el nombre del grupo."
-::msgcat::mcset es "Roster Notes" "Notas"
 ::msgcat::mcset es "Roster of %s" "Lista de contactos de %s"
 ::msgcat::mcset es "Roster options." "Opciones de la lista de contactos."
 ::msgcat::mcset es "Roster" "Lista de contactos"
-::msgcat::mcset es "rosters" "listas"
+::msgcat::mcset es "Rule Name:" "Nombre de la regla:"
 ::msgcat::mcset es "Rule name already exists" "El nombre de la regla ya existe"
-::msgcat::mcset es "Rule Name:" "Nombre de la regla:"
-::msgcat::mcset es "SASL auth error: %s" "Error en la autenticación SASL: %s"
 ::msgcat::mcset es "SASL Certificate:" "Certificado SASL:"
 ::msgcat::mcset es "SASL Port:" "Puerto SASL:"
+::msgcat::mcset es "SASL auth error: %s" "Error en la autenticación SASL: %s"
 ::msgcat::mcset es "SASL"
+::msgcat::mcset es "SI connection closed" "Conexión SI cerrada"
+::msgcat::mcset es "SSL & Compression" "SSL y Compresión"
+::msgcat::mcset es "SSL Certificate:" "Certificado SSL:"
+::msgcat::mcset es "SSL Info"
+::msgcat::mcset es "SSL Port:" "Puerto SSL:"
+::msgcat::mcset es "SSL certificate file (optional)." "Fichero de certificado SSL (opcional)."
+::msgcat::mcset es "SSL certification authority file or directory (optional)." "Autoridad certificadora o directorio de SSL (opcional)."
+::msgcat::mcset es "SSL private key file (optional)." "Fichero de clave SSL privada (opcional)."
+::msgcat::mcset es "SSL"
+::msgcat::mcset es "STARTTLS failed" "STARTTLS falló"
+::msgcat::mcset es "STARTTLS successful" "STARTTLS exitoso"
+::msgcat::mcset es "Save To Log" "Guardar en log"
 ::msgcat::mcset es "Save as:" "Guardar como:"
 ::msgcat::mcset es "Screenname conversion" "Conversión de dirección"
 ::msgcat::mcset es "Screenname: %s\n\nConverted JID: %s" "Dirección del contacot: %s\n\nJID convertido: %s"
@@ -798,16 +793,13 @@
 ::msgcat::mcset es "Search down" "Buscar abajo"
 ::msgcat::mcset es "Search in %s" "Buscar en %s"
 ::msgcat::mcset es "Search in %s: No matching items found" "Búsqueda en %s: No se han encontrado elementos que coincidan"
+::msgcat::mcset es "Search in Tkabber windows options." "Buscar en las opciones de ventana de Tkabber"
 ::msgcat::mcset es "Search in chat window" "Buscar en la ventana de charla"
 ::msgcat::mcset es "Search up" "Buscar arriba"
 ::msgcat::mcset es "Search" "Buscar"
 ::msgcat::mcset es "Search: %s" "Buscar: %s"
-::msgcat::mcset es "Search:" "Buscar:"
-::msgcat::mcset es "searching" "buscando"
-::msgcat::mcset es "second" "segundo"
-::msgcat::mcset es "seconds" "segundos"
+::msgcat::mcset es "See Other Host" "Ver Otros Hosts"
 ::msgcat::mcset es "See more..." "Ver más..."
-::msgcat::mcset es "See Other Host" "Ver Otros Hosts"
 ::msgcat::mcset es "Select Key for Signing %s Traffic" "Seleccionar clave para firmar el tráfico de %s"
 ::msgcat::mcset es "Select month:" "Seleccionar mes:"
 ::msgcat::mcset es "Select" "Seleccionar"
@@ -843,36 +835,37 @@
 ::msgcat::mcset es "Sending visible list: %s" "Enviando la lista de visibles: %s"
 ::msgcat::mcset es "Sergei Golovan" "Sergei Golovan"
 ::msgcat::mcset es "Serial number" "Número de serie"
-::msgcat::mcset es "Server doesn't support hashed password 			        authentication" "El servidor no permite autenticación por resumen de contraseña"
-::msgcat::mcset es "Server doesn't support plain or digest 			        authentication" "El servidor no permite autenticación simple o por resumen"
+::msgcat::mcset es "Server Port:" "Puerto del servidor:"
+::msgcat::mcset es "Server doesn't support hashed password authentication" "El servidor no permite autenticación por resumen de contraseña"
+::msgcat::mcset es "Server doesn't support plain or digest authentication" "El servidor no permite autenticación simple o por resumen"
+::msgcat::mcset es "Server haven't provided SASL authentication feature" "El servidor no ha proporcionado un mecanismo de autenticación SASL"
+::msgcat::mcset es "Server haven't provided STARTTLS feature" "El servidor no ha anunciado soporte de STARTTLS"
 ::msgcat::mcset es "Server haven't provided compress feature" "El servidor no ha anunciado que soporte compresión"
-::msgcat::mcset es "Server haven't provided non-SASL 			    authentication feature" "El servidor no ha proporcionado característica de autenticación no-SASL"
-::msgcat::mcset es "Server haven't provided SASL authentication 			    feature" "El servidor no ha proporcionado un mecanismo de autenticación SASL"
-::msgcat::mcset es "Server haven't provided STARTTLS feature" "El servidor no ha anunciado soporte de STARTTLS"
-::msgcat::mcset es "Server haven't provided supported 				   compress method" "El servidor no ha anunciado el soporte de un método de compresión soportado"
+::msgcat::mcset es "Server haven't provided non-SASL authentication feature" "El servidor no ha proporcionado característica de autenticación no-SASL"
+::msgcat::mcset es "Server haven't provided supported compress method" "El servidor no ha anunciado el soporte de un método de compresión soportado"
 ::msgcat::mcset es "Server name or IP-address." "Nombre del servidor o dirección IP."
 ::msgcat::mcset es "Server name." "Nombre del servidor."
 ::msgcat::mcset es "Server port." "Puerto del servidor."
-::msgcat::mcset es "Server Port:" "Puerto del servidor:"
 ::msgcat::mcset es "Server:" "Servidor:"
 ::msgcat::mcset es "Service Discovery" "Descubridor de servicios"
-::msgcat::mcset es "service discovery" "descubrimiento de servicios"
+::msgcat::mcset es "Service Unavailable" "Servicio no disponible"
 ::msgcat::mcset es "Service info" "Información del servicio"
 ::msgcat::mcset es "Service statistics" "Estadísticas del servicio"
-::msgcat::mcset es "Service Unavailable" "Servicio no disponible"
 ::msgcat::mcset es "Set bookmark" "Guardar marcador"
 ::msgcat::mcset es "Set for current and future sessions" "Modificar y guardar"
 ::msgcat::mcset es "Set for current session only" "Modificar solo para esta sesión (no guardar)"
 ::msgcat::mcset es "Set priority to 0 when moving to extended away state." "Ponerte prioridad 0 cuando te cambia a 'muy ausente'"
 ::msgcat::mcset es "Set" "Fijar"
+::msgcat::mcset es "Show IQ requests in the status line." "Mostrar peticiones IQ en la línea de estado."
+::msgcat::mcset es "Show Main Window" "Mostrar ventana principal"
+::msgcat::mcset es "Show Toolbar." "Mostrar Barra de Herramientas."
 ::msgcat::mcset es "Show console" "Mostrar consola"
 ::msgcat::mcset es "Show detailed info on conference room members in roster item tooltips." "Mostrar información detallada sobre los miembros de una sala de charla en los 'tooltips' de la lista de contactos."
 ::msgcat::mcset es "Show emoticons" "Mostrar emoticonos"
 ::msgcat::mcset es "Show history" "Mostrar historial"
 ::msgcat::mcset es "Show info" "Mostrar información"
-::msgcat::mcset es "Show IQ requests in the status line." "Mostrar peticiones IQ en la línea de estado."
-::msgcat::mcset es "Show Main Window" "Mostrar ventana principal"
 ::msgcat::mcset es "Show menu tearoffs when possible." "Mostrar tiras en los menus cuando sea posible."
+::msgcat::mcset es "Show my own resources in the roster." "Mostrar mis propios recursos en la lista de contactos."
 ::msgcat::mcset es "Show native icons for contacts, connected to transports/services in roster." "Mostrar iconos nativos para los contactos conectados a través de transportes en la lista de contactos."
 ::msgcat::mcset es "Show native icons for transports/services in roster." "Mostrar iconos nativos para transportes/servicios en la lista de contactos."
 ::msgcat::mcset es "Show number of unread messages in tab titles." "Mostrar cantidad de mensajes sin leer en el título de la pestaña."
@@ -883,11 +876,10 @@
 ::msgcat::mcset es "Show status bar." "Mostrar barra de estado."
 ::msgcat::mcset es "Show subscription type in roster item tooltips." "Mostrar tipo de suscripción en el globo informativo de la lista de contactos."
 ::msgcat::mcset es "Show tabs below the main window." "Mostrar pestañas debajo de la ventana principal."
-::msgcat::mcset es "Show Toolbar." "Mostrar Barra de Herramientas."
-::msgcat::mcset es "Show user info" "Mostrar información de usuario"
-::msgcat::mcset es "Show user info..." "Mostrar información de usuario..."
+::msgcat::mcset es "Show user or service info" "Mostrar información de usuario o servicio"
+::msgcat::mcset es "Show user or service info..." "Mostrar información de usuario o servicio..."
 ::msgcat::mcset es "Show" " Mostrar "
-::msgcat::mcset es "SI connection closed" "Conexión SI cerrada"
+::msgcat::mcset es "Signature not processed due to missing key" "Firma no procesada porque falta la llave"
 ::msgcat::mcset es "Single window" "Ventana individual"
 ::msgcat::mcset es "Size:" "Tamaño:"
 ::msgcat::mcset es "Smart autoscroll" "Desplazamiento automático inteligente"
@@ -909,21 +901,11 @@
 ::msgcat::mcset es "Sound to play when personal chat message is received." "Sonido a reproducir cuando se recibe un mensaje personal."
 ::msgcat::mcset es "Sound to play when sending personal chat message." "Sonido a reproducir cuando se envia un mensaje personal."
 ::msgcat::mcset es "Sound to play when unavailable presence is received." "Sonido a reproducir cuando se recibe una presencia 'desconectado'."
-::msgcat::mcset es "sound" "sonido"
 ::msgcat::mcset es "Sound" "Sonido"
+::msgcat::mcset es "Specifies search mode while searching in chat, log or disco windows. \"substring\" searches exact substring, \"glob\" uses glob style matching, \"regexp\" allows to match regular expression." "Especifica el modo de búsqueda. \"substring\" busca la subcadena exacta, \"glob\" usa concordancia de estilo glob, \"regexp\" permite usar expresiones regulares."
 ::msgcat::mcset es "Spell check options." "Opciones de correción ortográfica."
-::msgcat::mcset es "SSL & Compression" "SSL y Compresión"
-::msgcat::mcset es "SSL certificate file (optional)." "Fichero de certificado SSL (opcional)."
-::msgcat::mcset es "SSL Certificate:" "Certificado SSL:"
-::msgcat::mcset es "SSL certification authority file or directory (optional)." "Autoridad certificadora o directorio de SSL (opcional)."
-::msgcat::mcset es "SSL Info"
-::msgcat::mcset es "SSL Port:" "Puerto SSL:"
-::msgcat::mcset es "SSL private key file (optional)." "Fichero de clave SSL privada (opcional)."
-::msgcat::mcset es "SSL"
 ::msgcat::mcset es "Start chat" "Charlar en privado"
 ::msgcat::mcset es "Starting auto-away" "Pasando a auto ausencia"
-::msgcat::mcset es "STARTTLS failed" "STARTTLS falló"
-::msgcat::mcset es "STARTTLS successful" "STARTTLS exitoso"
 ::msgcat::mcset es "State " "Comunidad "
 ::msgcat::mcset es "State" "Estado"
 ::msgcat::mcset es "State:" "Estado/Provincia:"
@@ -934,7 +916,6 @@
 ::msgcat::mcset es "Stop chat window autoscroll." "Desactivar el desplazamiento automático de la ventana de charla."
 ::msgcat::mcset es "Store group chats logs." "Guardar registro de charlas en grupo."
 ::msgcat::mcset es "Store private chats logs." "Guardar registro de charlas privadas."
-::msgcat::mcset es "store this message offline" "guardar este mensaje fuera de linea"
 ::msgcat::mcset es "Store" "Guardar"
 ::msgcat::mcset es "Stored collapsed roster groups." "Almacenar el estado de los grupos colapsados en la lista de contactos."
 ::msgcat::mcset es "Stored main window state (normal or zoomed)" "Guardar estado de la ventana principal (normal o maximizado)"
@@ -948,6 +929,7 @@
 ::msgcat::mcset es "Stream initiation options." "Opciones de iniciación de Envío"
 ::msgcat::mcset es "Stream method negotiation failed" "Falló la negociación del método de Stream"
 ::msgcat::mcset es "Strip leading \"http://jabber.org/protocol/\" from IQ namespaces in the status line." "Quitar el \"http://jabber.org/protocol/\" del principio en los nombres de espacio de IQ en la línea de comandos."
+::msgcat::mcset es "SubID" "SubID"
 ::msgcat::mcset es "Subject is set to: %s" "El asunto se ha puesto a: %s"
 ::msgcat::mcset es "Subject" "Asunto"
 ::msgcat::mcset es "Subject: " "Asunto: "
@@ -957,7 +939,9 @@
 ::msgcat::mcset es "Subscribe request from:" "Petición de subscripción de:"
 ::msgcat::mcset es "Subscribe to a node" "Subscribir a nodo"
 ::msgcat::mcset es "Subscribe" "Suscribir"
+::msgcat::mcset es "Subscribed" "Suscrito"
 ::msgcat::mcset es "Subscription Required" "Se requiere subscripción"
+::msgcat::mcset es "Subscription" "Suscripción"
 ::msgcat::mcset es "Substrings to highlight in messages." "Sílabas a resaltar en los mensajes."
 ::msgcat::mcset es "Suffix" "Sufijo"
 ::msgcat::mcset es "Suffix:" "Sufijo:"
@@ -968,33 +952,27 @@
 ::msgcat::mcset es "Tabs:" "Pestañas:"
 ::msgcat::mcset es "Telephone numbers" "Números de teléfono"
 ::msgcat::mcset es "Templates" "Plantillas"
+::msgcat::mcset es "Temporary Error" "Error temporal"
 ::msgcat::mcset es "Temporary auth failure" "Fallo en la autenticación temporal"
-::msgcat::mcset es "Temporary Error" "Error temporal"
 ::msgcat::mcset es "Text status, which is set when Tkabber is moving to away state." "Mensaje de estado que Tkabber te pone cuando te cambia a 'ausente' automáticamente."
-::msgcat::mcset es "text undo" "deshacer texto"
 ::msgcat::mcset es "Text:" "Texto:"
-::msgcat::mcset es "the body is" "el cuerpo del mensaje es"
-::msgcat::mcset es "the message is from" "el mensaje es de"
-::msgcat::mcset es "the message is sent to" "el mensaje se envia a"
-::msgcat::mcset es "the message type is" "el tipo del mensaje es"
-::msgcat::mcset es "the option is set and saved." "opción modificada y guardada."
-::msgcat::mcset es "the option is set to its default value." "opción en su valor por defecto."
-::msgcat::mcset es "the option is set, but not saved." "opción modificada pero no guardada."
-::msgcat::mcset es "the option is taken from config file." "opción leída del fichero de configuración."
-::msgcat::mcset es "the subject is" "el asunto es"
+::msgcat::mcset es "The signature is good but has expired" "La firma es buena pero ha expirado"
+::msgcat::mcset es "The signature is good but the key has expired" "La firma es buena pero la llave ha expirado"
 ::msgcat::mcset es "This message is encrypted." "Este mensaje está cifrado."
-::msgcat::mcset es "time %s%s: %s" "tiempo %s%s: %s"
-::msgcat::mcset es "time %s%s:" "tiempo %s%s:"
+::msgcat::mcset es "This message was forwarded by %s\n" "Este mensaje fue reenviado por %s\n"
+::msgcat::mcset es "This message was forwarded to %s" "Este mensaje se reenvió a %s"
+::msgcat::mcset es "This message was sent by %s\n" "Este mensaje fue enviado por %s\n"
+::msgcat::mcset es "Time Zone:" "Zona horaria:"
 ::msgcat::mcset es "Time interval before playing next sound (in milliseconds)." "Intervalo de tiempo entre reproducción de sonidos (en milisegundos)."
-::msgcat::mcset es "Time Zone:" "Zona horaria:"
 ::msgcat::mcset es "Time" "Hora"
 ::msgcat::mcset es "Time:" "Hora:"
 ::msgcat::mcset es "Timeout for waiting for HTTP poll responces (if set to zero, Tkabber will wait forever)." "+++"
 ::msgcat::mcset es "Timer" "Temporizador"
 ::msgcat::mcset es "Title" "Cargo"
 ::msgcat::mcset es "Title:" "Cargo:"
-::msgcat::mcset es "Tkabber icon theme. To make new theme visible for Tkabber 	     put it to some subdirectory of ~/.tkabber/pixmaps" "Tema de iconos de Tkabber. Para instalar un tema nuevo, cópialo a un subdirectorio de ~/.tkabber/pixmaps"
 ::msgcat::mcset es "Tkabber Systray" "Icono en la Bandeja de Sistema"
+::msgcat::mcset es "Tkabber icon theme. To make new theme visible for Tkabber put it to some subdirectory of ~/.tkabber/pixmaps" "Tema de iconos de Tkabber. Para instalar un tema nuevo, cópialo a un subdirectorio de ~/.tkabber/pixmaps"
+::msgcat::mcset es "To" "Para"
 ::msgcat::mcset es "To: " "Para: "
 ::msgcat::mcset es "To:" "Para:"
 ::msgcat::mcset es "Toggle encryption (when possible)" "Activar/Desactivar el cifrado (cuando sea posible)"
@@ -1003,16 +981,23 @@
 ::msgcat::mcset es "Toggle showing offline users" "Activar/Desactivar la vista de usuarios desconectados"
 ::msgcat::mcset es "Toggle signing" "Activar/Desactivar el firmado"
 ::msgcat::mcset es "Toolbar" "Barra de herramientas"
+::msgcat::mcset es "Transfer failed: %s" "La trasnferencia falló: %s"
 ::msgcat::mcset es "Transferring..." "Transfiriendo..."
 ::msgcat::mcset es "Try again" "Volver a intentarlo"
 ::msgcat::mcset es "Type" "Tipo"
 ::msgcat::mcset es "UID" 
 ::msgcat::mcset es "UID:"
-::msgcat::mcset es "Unable to encipher data for %s: 				    %s.\n\nEncrypting traffic to this user is 				    now disabled.\n\nSend it as PLAINTEXT?" "No se ha podido cifrar los datos para %s: 				    %s.\n\nSe ha desactivado el cifrado del tráfico con este usuario.\n\n¿Enviar sin cifrar?"
+::msgcat::mcset es "URL to connect to." "URL a la que conectar."
+::msgcat::mcset es "URL to poll:" "URL para Poll:"
+::msgcat::mcset es "URL" "URL"
+::msgcat::mcset es "URL:" "URL:"
+::msgcat::mcset es "UTC:"
+::msgcat::mcset es "Unable to encipher data for %s: %s.\n\nEncrypting traffic to this user is now disabled.\n\nSend it as PLAINTEXT?" "No se ha podido cifrar los datos para %s: %s.\n\nSe ha desactivado el cifrado del tráfico con este usuario.\n\n¿Enviar sin cifrar?"
 ::msgcat::mcset es "Unable to sign message body: %s.\n\nSigning traffic is now disabled.\n\nSend it WITHOUT a signature?" "Imposible firmar el cuerpo del mensaje: %s.\n\n¿Enviar SIN firma?"
 ::msgcat::mcset es "Unable to sign presence information: %s.\n\nPresence will be sent, but signing traffic is now disabled." "Imposible firmar información de presencia: %s.\n\nLa presencia se enviará, pero el firmado de tráfico está ahora desactivado."
 ::msgcat::mcset es "Unavailable presence" "Presencia: desconectado"
 ::msgcat::mcset es "Unavailable" "No disponible"
+::msgcat::mcset es "Unconfigured" "No configurado"
 ::msgcat::mcset es "Undefined Condition" "Condición no definida"
 ::msgcat::mcset es "Undefined" "Indefinido"
 ::msgcat::mcset es "Undo" "Deshacer"
@@ -1024,17 +1009,21 @@
 ::msgcat::mcset es "Unsubscribe from a node" "Desubscribirse de un nodo"
 ::msgcat::mcset es "Unsubscribe" "Desuscribir"
 ::msgcat::mcset es "Unsubscribed from %s" "Desuscrito de %s"
-::msgcat::mcset es "Unsupported compression method" "Método de compresión no soportado"
 ::msgcat::mcset es "Unsupported Encoding" "Codificación No Soportada"
 ::msgcat::mcset es "Unsupported Stanza Type" "Tipo de Stanza No Soportado"
 ::msgcat::mcset es "Unsupported Version" "Versión No Soportada"
+::msgcat::mcset es "Unsupported compression method" "Método de compresión no soportado"
 ::msgcat::mcset es "Up" "Arriba"
 ::msgcat::mcset es "Update message of the day..." "Actualizar mensaje del día..."
 ::msgcat::mcset es "Uptime" "Tiempo activo"
-::msgcat::mcset es "URL to connect to." "URL a la que conectar."
-::msgcat::mcset es "URL to poll:" "URL para Poll:"
-::msgcat::mcset es "URL" "URL"
-::msgcat::mcset es "URL:" "URL:"
+::msgcat::mcset es "Use HTTP poll client security keys (recommended)." "Usar claves de seguridad del cliente HTTP Poll (recomendado)."
+::msgcat::mcset es "Use HTTP poll connection method." "Usar método de conexión HTTP Poll."
+::msgcat::mcset es "Use HTTP proxy to connect." "Usar proxy HTTP para la conexión."
+::msgcat::mcset es "Use Proxy" "Usar Proxy"
+::msgcat::mcset es "Use SASL authentication" "Usar autenticación SASL"
+::msgcat::mcset es "Use SASL authentication." "Usar autenticación SASL."
+::msgcat::mcset es "Use SSL" "Usar SSL"
+::msgcat::mcset es "Use Tabbed Interface (you need to restart)." "Usar Tkabber en modo pestañas (necesitas reiniciar Tkabber)."
 ::msgcat::mcset es "Use aliases to show multiple users in one roster item." "Usar alias para mostrar múltiples usuarios en un solo item de la lista de contactos."
 ::msgcat::mcset es "Use aliases" "Usar apodos"
 ::msgcat::mcset es "Use cascaded (otherwise flat) file transfer menu." "Usar menus de transferencia de ficheros en cascada (en otro caso serán planos)."
@@ -1046,42 +1035,22 @@
 ::msgcat::mcset es "Use colored roster nicks" "Usar apodos coloreados en la lista de contactos"
 ::msgcat::mcset es "Use explicitly-specified server address and port." "Usar dirección y puerto del servidor definidas explícitamente."
 ::msgcat::mcset es "Use hashed password" "Usar resumen de la contraseña"
-::msgcat::mcset es "Use HTTP poll client security keys (recommended)." "Usar claves de seguridad del cliente HTTP Poll (recomendado)."
-::msgcat::mcset es "Use HTTP poll connection method." "Usar método de conexión HTTP Poll."
-::msgcat::mcset es "Use HTTP proxy to connect." "Usar proxy HTTP para la conexión."
-::msgcat::mcset es "Use Proxy" "Usar Proxy"
-::msgcat::mcset es "Use regexp match while searching in log window (otherwise substring is searched)." "Usar coincidencia regexp cuando se busca en la ventana de historial (en otro caso se buscará por subcadenas)."
-::msgcat::mcset es "Use SASL authentication" "Usar autenticación SASL"
-::msgcat::mcset es "Use SASL authentication." "Usar autenticación SASL."
+::msgcat::mcset es "Use mediated SOCKS5 connection if proxy is available." "Usar conexión SOCK5 mediada si el proxy está disponible."
 ::msgcat::mcset es "Use sound notification only when being available." "Usar la notificación sonora sólo cuanto se está en estado 'disponible'."
 ::msgcat::mcset es "Use specified key ID for signing and decrypting messages." "Usar el ID de llave especificado para firmar y descifrar mensajes."
-::msgcat::mcset es "Use SSL" "Usar SSL"
-::msgcat::mcset es "Use Tabbed Interface (you need to restart)." "Usar Tkabber en modo pestañas (necesitas reiniciar Tkabber)."
 ::msgcat::mcset es "Use the same passphrase for signing and decrypting messages." "Usar la misma contraseña para firmar y descifrar mensajes."
 ::msgcat::mcset es "Use this module" "Usar este módulo"
+::msgcat::mcset es "User ID" "ID de usuario"
 ::msgcat::mcset es "User already %s" "El usuario ya está %s"
-::msgcat::mcset es "User ID" "ID de usuario"
 ::msgcat::mcset es "User info" "Información del usuario"
-::msgcat::mcset es "user interface" "interfaz de usuario"
 ::msgcat::mcset es "User name." "Nombre de usuario."
 ::msgcat::mcset es "User name." "Nombre de usuario."
 ::msgcat::mcset es "User-Agent string." "Cadena de identificación del usuario."
 ::msgcat::mcset es "Username:" "Nombre de usuario:"
 ::msgcat::mcset es "Users" "Usuarios"
-::msgcat::mcset es "UTC:"
-::msgcat::mcset es "utilities" "herramientas"
-::msgcat::mcset es "value is changed, but the option is not set." "valor modificado, pero opción no modificada."
 ::msgcat::mcset es "Value" "Valor"
-::msgcat::mcset es "vcard %s%s: %s" "vCard %s%s: %s"
-::msgcat::mcset es "vcard %s%s:" "vCard %s%s:"
-::msgcat::mcset es "vCard display options in chat windows." "Opciones de visualización de vCard en la ventana de charla."
-::msgcat::mcset es "version %s%s: %s" "versión %s%s: %s"
-::msgcat::mcset es "version %s%s:" "versión %s%s:"
 ::msgcat::mcset es "Version" "Versión"
 ::msgcat::mcset es "Version:" "Versión:"
-::msgcat::mcset es "via HTTP..." "via HTTP..."
-::msgcat::mcset es "via Jidlink..." "via Jidlink..."
-::msgcat::mcset es "via SI..." "via 'S.I.'..."
 ::msgcat::mcset es "Video:" "Video:"
 ::msgcat::mcset es "View" "Ver"
 ::msgcat::mcset es "Visible list" "Lista de visibles"
@@ -1098,13 +1067,102 @@
 ::msgcat::mcset es "Web Site" "Sitio web"
 ::msgcat::mcset es "Web Site:" "Sitio web:"
 ::msgcat::mcset es "What action does the close button." "Acción realizada por el botón de Cerrar."
-::msgcat::mcset es "whois %s: %s" "Quien es %s: %s"
-::msgcat::mcset es "whois %s: no info" "Quien es %s: información no disponible"
 ::msgcat::mcset es "Whois" "¿Quién es?"
-::msgcat::mcset es "wmaker"
 ::msgcat::mcset es "Work:" "Trabajo:"
 ::msgcat::mcset es "XML Not Well-Formed" "XML No está Bien Formado"
 ::msgcat::mcset es "XMPP stream options when connecting to server." "Opciones de la comunicación XMPP cuando se conecta al servidor."
 ::msgcat::mcset es "Year:" "Año:"
 ::msgcat::mcset es "Zip:" "Código Postal:"
-
+::msgcat::mcset es "\nAlternative venue: %s" "\nLugar alternativo: %s"
+::msgcat::mcset es "\nReason is: %s" "\nLa razón es: %s"
+::msgcat::mcset es "\nReason: %s" "\nRazón: %s"
+::msgcat::mcset es "\nRoom is empty at %s" "\nLa sala %s está vacía"
+::msgcat::mcset es "\nRoom participants at %s:" "\nParticipantes a las %s:"
+::msgcat::mcset es "\n\tAffiliation: %s" "\n\tAfiliación: %s"
+::msgcat::mcset es "\n\tCan't browse: %s" "\n\tNo se puede navegar: %s"
+::msgcat::mcset es "\n\tClient: %s" "\n\tCliente: %s"
+::msgcat::mcset es "\n\tJID: %s" "\n\tJID: %s"
+::msgcat::mcset es "\n\tName: %s" "\n\tNombre: %s"
+::msgcat::mcset es "\n\tOs: %s" "\n\tSO: %s"
+::msgcat::mcset es "\n\tPresence is signed:" "\n\tLa presencia está firmada:"
+::msgcat::mcset es "auto-away" "auto-ausencia"
+::msgcat::mcset es "avatars" "avatares"
+::msgcat::mcset es "balloon help" "ayuda contextual"
+::msgcat::mcset es "browsing" "explorando"
+::msgcat::mcset es "bwidget workarounds" "arreglos de bwidget"
+::msgcat::mcset es "change message type to" "cambiar el tipo del mensaje a"
+::msgcat::mcset es "configuration" "configuración"
+::msgcat::mcset es "connections" "conexiones"
+::msgcat::mcset es "continue processing rules" "seguir procesando reglas"
+::msgcat::mcset es "cryptographics" "criptografía"
+::msgcat::mcset es "customization" "personalización"
+::msgcat::mcset es "day" "dia"
+::msgcat::mcset es "days" "dias"
+::msgcat::mcset es "emoticons" "emoticonos"
+::msgcat::mcset es "extension management" "gestión de extensiones"
+::msgcat::mcset es "file transfer" "transferencia de ficheros"
+::msgcat::mcset es "forward message to" "reenviar el mensaje a"
+::msgcat::mcset es "general plugins" "plugins generales"
+::msgcat::mcset es "hour" "hora"
+::msgcat::mcset es "hours" "horas"
+::msgcat::mcset es "invalid userstatus value " "valor de estado de usuario inválido "
+::msgcat::mcset es "is now" "está ahora"
+::msgcat::mcset es "jabber chat/muc" "salas de charla"
+::msgcat::mcset es "jabber iq" "Jabber iq"
+::msgcat::mcset es "jabber messages" "mensajes"
+::msgcat::mcset es "jabber presence" "presencia Jabber"
+::msgcat::mcset es "jabber registration" "registro Jabber"
+::msgcat::mcset es "jabber roster" "lista de contactos"
+::msgcat::mcset es "jabber xml" "Jabber XML"
+::msgcat::mcset es "kde"
+::msgcat::mcset es "last %s%s: %s" "último %s%s: %s"
+::msgcat::mcset es "last %s%s:" "último %s%s:"
+::msgcat::mcset es "macintosh plugins" "plygins de macintosh"
+::msgcat::mcset es "message filters" "filtros de mensajes"
+::msgcat::mcset es "minute" "minuto"
+::msgcat::mcset es "minutes" "minutos"
+::msgcat::mcset es "my status is" "mi estado es"
+::msgcat::mcset es "negotiation" "negociación"
+::msgcat::mcset es "no mechanism available" "no hay ningún mecanismo disponible"
+::msgcat::mcset es "pixmaps management" "manejo de pixmaps"
+::msgcat::mcset es "plugin management" "gestión de plugins"
+::msgcat::mcset es "presence" "presencia"
+::msgcat::mcset es "privacy rules" "reglas de privacidad"
+::msgcat::mcset es "reply with" "responder con"
+::msgcat::mcset es "roster plugins" "plugins de lista de contactos"
+::msgcat::mcset es "search plugins" "plugins de búsqueda"
+::msgcat::mcset es "searching" "buscando"
+::msgcat::mcset es "second" "segundo"
+::msgcat::mcset es "seconds" "segundos"
+::msgcat::mcset es "service discovery" "descubrimiento de servicios"
+::msgcat::mcset es "sound" "sonido"
+::msgcat::mcset es "store this message offline" "guardar este mensaje fuera de linea"
+::msgcat::mcset es "text undo" "deshacer texto"
+::msgcat::mcset es "the body is" "el cuerpo del mensaje es"
+::msgcat::mcset es "the message is from" "el mensaje es de"
+::msgcat::mcset es "the message is sent to" "el mensaje se envia a"
+::msgcat::mcset es "the message type is" "el tipo del mensaje es"
+::msgcat::mcset es "the option is set and saved." "opción modificada y guardada."
+::msgcat::mcset es "the option is set to its default value." "opción en su valor por defecto."
+::msgcat::mcset es "the option is set, but not saved." "opción modificada pero no guardada."
+::msgcat::mcset es "the option is taken from config file." "opción leída del fichero de configuración."
+::msgcat::mcset es "the subject is" "el asunto es"
+::msgcat::mcset es "time %s%s: %s" "tiempo %s%s: %s"
+::msgcat::mcset es "time %s%s:" "tiempo %s%s:"
+::msgcat::mcset es "unix plugins" "plugins de unix"
+::msgcat::mcset es "unknown" "desconocido"
+::msgcat::mcset es "user interface" "interfaz de usuario"
+::msgcat::mcset es "utilities" "herramientas"
+::msgcat::mcset es "vCard display options in chat windows." "Opciones de visualización de vCard en la ventana de charla."
+::msgcat::mcset es "value is changed, but the option is not set." "valor modificado, pero opción no modificada."
+::msgcat::mcset es "vcard %s%s: %s" "vCard %s%s: %s"
+::msgcat::mcset es "vcard %s%s:" "vCard %s%s:"
+::msgcat::mcset es "version %s%s: %s" "versión %s%s: %s"
+::msgcat::mcset es "version %s%s:" "versión %s%s:"
+::msgcat::mcset es "via HTTP..." "via HTTP..."
+::msgcat::mcset es "via Jidlink..." "via Jidlink..."
+::msgcat::mcset es "via SI..." "via 'S.I.'..."
+::msgcat::mcset es "whois %s: %s" "Quien es %s: %s"
+::msgcat::mcset es "whois %s: no info" "Quien es %s: información no disponible"
+::msgcat::mcset es "windows plugins" "plugins de ventanas"
+::msgcat::mcset es "wmaker"

Modified: trunk/tkabber/msgs/pl.msg
===================================================================
--- trunk/tkabber/msgs/pl.msg	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/msgs/pl.msg	2006-09-25 18:59:51 UTC (rev 731)
@@ -79,6 +79,9 @@
 ::msgcat::mcset pl "Size:" "Rozmiar:"
 ::msgcat::mcset pl "Connection closed" "Połączenie zamknięte"
 ::msgcat::mcset pl "Use cascaded (otherwise flat) file transfer menu." "Włącz kaskadowe menu wyboru protokołu przesyłania plików."
+::msgcat::mcset pl "unknown" "nieznany"
+::msgcat::mcset pl "File transfer error" "Błąd transmisji pliku"
+::msgcat::mcset pl "Failed to open file \"%s\".\nThe error was: %s" "Nie można otworzyć pliku \"%s\".\nWystąpił błąd: %s"
 
 # default.tcl
 ::msgcat::mcset pl "Error displaying %s in browser\n\n%s" "Wystąpił błąd podczas otwierania %s w przeglądarce\n\n%s"
@@ -751,6 +754,7 @@
 ::msgcat::mcset pl "Subject: " "Temat: "
 ::msgcat::mcset pl "Subscribe request from:" "Prośba o subskrypcję od:"
 ::msgcat::mcset pl "Send subscription to: " "Prośba o subskrypcję do: "
+::msgcat::mcset pl "I would like to add you to my roster." "Chciałbym dodać Cię do mojej listy kontaktów."
 
 # iface.tcl
 ::msgcat::mcset pl "Options for main interface." "Ustawienia wyglądu i zachowania aplikacji."
@@ -1098,6 +1102,9 @@
 ::msgcat::mcset pl "Reply to current time (jabber:iq:time) requests." "Odpowiadaj na zapytania o aktualny czas (jabber:iq:time)."
 
 # splash.tcl
+::msgcat::mcset pl "Save To Log" "Zapisz do pliku dziennika"
+::msgcat::mcset pl "customization" "dostosowanie"
+::msgcat::mcset pl "pixmaps management" "zarządzanie obrazkami"
 ::msgcat::mcset pl "auto-away" "autostatus"
 ::msgcat::mcset pl "avatars" "awatary"
 ::msgcat::mcset pl "balloon help" "dymki pomocy"
@@ -1120,18 +1127,28 @@
 ::msgcat::mcset pl "jabber groupchats" "konferencje"
 ::msgcat::mcset pl "connections" "połączenia"
 ::msgcat::mcset pl "message/headline" "wiadomości/nagłówki"
+::msgcat::mcset pl "jabber messages" "obsługa wiadomości"
 ::msgcat::mcset pl "multi-user chat" "MUC"
+::msgcat::mcset pl "jabber chat/muc" "obsługa rozmów/konferencji"
 ::msgcat::mcset pl "negotiation" "negocjacja"
 ::msgcat::mcset pl "plugin management" "zarządzanie wtyczkami"
 ::msgcat::mcset pl "jabber presence" "jabber presence"
 ::msgcat::mcset pl "privacy rules" "zasady ochrony prywatności"
 ::msgcat::mcset pl "jabber registration" "jabber rejestracja"
 ::msgcat::mcset pl "rosters" "lista kontaktów"
+::msgcat::mcset pl "jabber roster" "lista kontaktów"
 ::msgcat::mcset pl "searching" "wyszukiwanie"
 ::msgcat::mcset pl "sound" "dźwięk"
 ::msgcat::mcset pl "text undo" "edycja tekstu"
 ::msgcat::mcset pl "presence" "status"
 ::msgcat::mcset pl "wmaker" "wmaker"
+::msgcat::mcset pl "general plugins" "podstawowe wtyczki"
+::msgcat::mcset pl "roster plugins" "wtyczki listy kontaktów"
+::msgcat::mcset pl "search plugins" "wtyczki wyszukiwania"
+::msgcat::mcset pl "unix plugins" "wtyczki dla systemu Unix"
+::msgcat::mcset pl "windows plugins" "wtyczki dla systemu Windows"
+::msgcat::mcset pl "macintosh plugins" "wtyczki dla systemu Mac"
+::msgcat::mcset pl "%s plugin" "wtyczka %s"
 
 # chats.tcl
 ::msgcat::mcset pl "Chat options." "Ustawienia rozmów i konferencji."
@@ -1326,7 +1343,7 @@
 ::msgcat::mcset pl "Status description options." "Opcje opisów statusów pod kontaktami."
 ::msgcat::mcset pl "Regular expression for filtering contacts to disable status description displaying." "Wyrażenie regularne do filtrowania kontaktów, dla których nie jest wyświetlany status opisowy."
 ::msgcat::mcset pl "Show status description below contact name." "Pokaż status opisowy pod nazwą kontaktu."
-::msgcat::mcset pl "Value to decrease the font size of status description (relatively to actual roster font size)" "Wartość, o która zmniejszany jest rozmiar czcionki opisu statusu (względem aktualnego rozmiaru czionki dla nazw kontaktów)"
+::msgcat::mcset pl "Value to decrease the font size of status description (relatively to actual roster font size)" "Wartość, o która zmniejszany jest rozmiar czcionki opisu statusu (względem aktualnego rozmiaru czcionki dla nazw kontaktów)"
 
 # ifaceck/iroster.tcl
 ::msgcat::mcset pl "Send contacts to" "Wyślij kontakty do"
@@ -1426,10 +1443,19 @@
 
 # plugins/si/socks5.tcl
 ::msgcat::mcset pl "Opening SOCKS5 listening socket" "Otwieranie gniazda SOCKS5"
+::msgcat::mcset pl "Use mediated SOCKS5 connection if proxy is available." "Włącz negocjację połączenia SOCKS5 jeżeli dostępny jest serwer proxy."
+::msgcat::mcset pl "List of proxy servers for SOCKS5 bytestreams (all available servers will be tried for mediated connection)." "Rozdzielona spacjami lista serwerów proxy do połączeń SOCKS5 (wszystkie wymienione serwery zostaną sprawdzone przy połączeniu negocjowanym)."
+::msgcat::mcset pl "Illegal result" "Nieprawidłowy wynik"
+::msgcat::mcset pl "Cannot connect to proxy" "Nie można połączyć się z serwerem proxy"
+::msgcat::mcset pl "Cannot negotiate proxy connection" "Nie udało się wynegocjować połączenia proxy"
 
+# plugins/si/iqibb.tcl
+::msgcat::mcset pl "Opening IQ-IBB connection" "Otwieranie połączenia IQ-IBB"
+
 # plugins/filetransfer/si.tcl
 ::msgcat::mcset pl "Stream initiation options." "Ustawienia protokołu inicjacji strumienia (SI)."
 ::msgcat::mcset pl "Enable SI transport for outgoing file transfers." "Włącz transport SI dla wysyłanych plików."
+::msgcat::mcset pl "Transfer failed: %s" "Nie udało się przesłać pliku: %s"
 
 # plugins/filetransfer/http.tcl
 ::msgcat::mcset pl "File to send:" "Plik do wysłania:"
@@ -1511,6 +1537,18 @@
 ::msgcat::mcset pl "day" "dzień"
 ::msgcat::mcset pl "days" "dni"
 
+# pubsub.tcl
+::msgcat::mcset pl "Owner" "Właściciel"
+::msgcat::mcset pl "Publisher" "Wydawca"
+::msgcat::mcset pl "Outcast" "Wyrzutek"
+::msgcat::mcset pl "Pending" "Oczekujący"
+::msgcat::mcset pl "Unconfigured" "Nieskonfigurowany"
+::msgcat::mcset pl "Subscribed" "Zasubskrybowany"
+::msgcat::mcset pl "Edit entities affiliations: %s" "Edytuj przynależności obiektów: %s"
+::msgcat::mcset pl "Jabber ID"
+::msgcat::mcset pl "SubID"
+::msgcat::mcset pl "Subscription" "Subskrypcja"
+
 #------------------------- Tkabber plugins --------------------------------
 
 # plugins/chess/chess.tcl
@@ -1700,3 +1738,58 @@
 ::msgcat::mcset pl "Autofade" "Przezroczystość"
 ::msgcat::mcset pl "Autofade plugin options." "Ustawienia wtyczki przezroczystości."
 
+# plugins/traffic/traffic.tcl
+::msgcat::mcset pl "Pres IN" "Status WCH"
+::msgcat::mcset pl "Pres OUT" "Status WYCH"
+::msgcat::mcset pl "Iq IN" "Iq WCH"
+::msgcat::mcset pl "Iq OUT" "Iq WYCH"
+::msgcat::mcset pl "Msg IN" "Wiad WCH"
+::msgcat::mcset pl "Msg OUT" "Wiad WYCH"
+::msgcat::mcset pl "All IN" "Wsz WCH"
+::msgcat::mcset pl "All OUT" "Wsz WYCH"
+::msgcat::mcset pl "On" "Włącz"
+::msgcat::mcset pl "Off" "Wyłącz"
+::msgcat::mcset pl "Traffic plugin options." "Ustawienia wtyczki statystyki ruchu."
+::msgcat::mcset pl "Show nick instead of JID." "Pokaż nazwy kontaktów zamiast JID."
+::msgcat::mcset pl "Use human-readable counters with K, M, G." "Użyj jednostek łatwych do odczytania (z K, M, G)."
+::msgcat::mcset pl "Traffic statistics" "Statystyka ruchu"
+::msgcat::mcset pl "Traffic" "Statystyka ruchu"
+::msgcat::mcset pl "Refresh" "Odśwież"
+::msgcat::mcset pl "Show XML" "Pokaż konsolę XML"
+::msgcat::mcset pl "Reset" "Wyzeruj"
+::msgcat::mcset pl "Timer:"
+::msgcat::mcset pl "Total" "Razem"
+::msgcat::mcset pl "A you sure you want to reset counters?" "Czy na pewno wyzerować liczniki?"
+
+# plugins/remote/xaddress.tcl
+::msgcat::mcset pl "Original from" "Oryginalny nadawca"
+::msgcat::mcset pl "Original to" "Oryginalny adresat"
+::msgcat::mcset pl "Reply to" "Odpowiedź do"
+::msgcat::mcset pl "Reply to room" "Odpowiedź do pokoju"
+::msgcat::mcset pl "No reply" "Bez odpowiedzi"
+::msgcat::mcset pl "To" "Do"
+::msgcat::mcset pl "Carbon copy" "Kopia"
+::msgcat::mcset pl "Blind carbon copy" "Ukryta kopia"
+::msgcat::mcset pl "This message was forwarded by %s\n" "Ta wiadomość została przekazana przez %s\n"
+::msgcat::mcset pl "This message was sent by %s\n" "Ta wiadomość została wysłana przez %s\n"
+::msgcat::mcset pl "Extended addressing fields:" "Rozszerzone pola adresowe:"
+::msgcat::mcset pl "Forwarded by:" "Przekazane przez:"
+::msgcat::mcset pl "\$names(\$type):" "\$names(\$type):"
+
+# plugins/general/xcommands.tcl
+::msgcat::mcset pl "Commands" "Polecenia"
+
+# plugins/remote/remote.tcl
+::msgcat::mcset pl "Remote control options." "Ustawienia zdalnego sterowania Tkabberem."
+::msgcat::mcset pl "Enable remote control." "Włącz obsługę zdalnego sterownia."
+::msgcat::mcset pl "Accept connections from my own JID." "Akceptuj połączenia z własnego JID."
+::msgcat::mcset pl "Accept connections from the listed JIDs." "Akceptuj połączenia od następujących JID (pozycje listy oddziel spacjami)."
+::msgcat::mcset pl "Show my own resources in the roster." "Pokaż własne zasoby na liście kontaktów."
+::msgcat::mcset pl "This message was forwarded to %s" "Ta wiadomość została przekazana do %s"
+::msgcat::mcset pl "All unread messages was forwarded to %s." "Wszystkie nieprzeczytane wiadomości zostały przekazane do %s."
+
+# Custom messages from config.tcl
+::msgcat::mcset pl "Open in Disco browser" "Otwórz w przeglądarce usług"
+::msgcat::mcset pl "Copy to clipboard" "Kopiuj do schowka"
+::msgcat::mcset pl "Status description" "Opis statusu"
+

Modified: trunk/tkabber/msgs/ru.msg
===================================================================
--- trunk/tkabber/msgs/ru.msg	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/msgs/ru.msg	2006-09-25 18:59:51 UTC (rev 731)
@@ -78,8 +78,7 @@
 ::msgcat::mcset ru "Available presence" "Присутствие типа \"доступен\""
 ::msgcat::mcset ru "Available" "Доступен"
 ::msgcat::mcset ru "auto-away"
-# "Automatically away due to idle" goes to textstatus (probably no needs to translate)
-::msgcat::mcset ru "Automatically away due to idle"
+::msgcat::mcset ru "Automatically away due to idle" "Автоматически в состоянии \"отошёл\" по бездействию"
 ::msgcat::mcset ru "Available groups" "Группы"
 ::msgcat::mcset ru "avatars" "аватары"
 ::msgcat::mcset ru "Avatar" "Аватара"
@@ -362,6 +361,8 @@
 ::msgcat::mcset ru "Font to use in roster, chat windows etc." \
     "Шрифт для окна контактов, окон разговора и т. д."
 ::msgcat::mcset ru "Forbidden" "Запрещено"
+::msgcat::mcset ru "Force advertising this hostname (or IP address) for outgoing HTTP file transfers." \
+    "Объявлять указанное имя (или IP-адрес) для исходящей передачи файлов по HTTP."
 ::msgcat::mcset ru "Format Error" "Ошибка формата"
 ::msgcat::mcset ru "Format of timestamp in chat message.\
 Refer to Tcl documentation of 'clock' command for description of format.
@@ -477,6 +478,7 @@
 ::msgcat::mcset ru "Invite users to %s" "Пригласить пользователей в %s"
 ::msgcat::mcset ru "Invite users..." "Пригласить пользователей..."
 ::msgcat::mcset ru "Invite" "Пригласить"
+::msgcat::mcset ru "I would like to add you to my roster." "Мне бы хотелось добавить Вас в список контактов."
 ::msgcat::mcset ru "IP address:" "IP адрес:"
 ::msgcat::mcset ru "IQ"
 ::msgcat::mcset ru "ISDN:"
@@ -533,10 +535,8 @@
 ::msgcat::mcset ru "List of JIDs to whom headlines have been sent." "Список JID, кому были посланы новости."
 ::msgcat::mcset ru "List of logout reasons." "Список причин отключения."
 ::msgcat::mcset ru "List of message destination JIDs." "Список JID, кому были посланы сообщения."
-::msgcat::mcset ru "List of proxy servers for SOCKS5 bytestreams (all available\
-    servers will be tried for mediated connection)." \
-    "Список прокси-серверов для передачи потока SOCKS5 (попытка использовать как посредника\
-    будет предпринята для всех доступных серверов)."
+::msgcat::mcset ru "List of proxy servers for SOCKS5 bytestreams (all available servers will be tried for mediated connection)." \
+    "Список прокси-серверов для передачи потока SOCKS5 (попытка использовать в качестве посредника будет предпринята для всех доступных серверов)."
 ::msgcat::mcset ru "List of users for chat."
 ::msgcat::mcset ru "List of users for userinfo."
 ::msgcat::mcset ru "Load Image" "Загрузить изображение"
@@ -751,6 +751,8 @@
 ::msgcat::mcset ru "PNG images" "Изображения PNG"
 ::msgcat::mcset ru "Policy Violation" "Нарушение политики"
 ::msgcat::mcset ru "Port:" "Порт:"
+::msgcat::mcset ru "Port for outgoing HTTP file transfers (0 for assigned automatically). This is useful when sending files from behind a NAT with a forwarded port." \
+    "Порт для исходящей передачи файлов по HTTP (если равен 0, то выбирается автоматически). Применяется, когда файл посылается через NAT через пробрасываемый порт."
 ::msgcat::mcset ru "Postal Code:" "Почтовый индекс:"
 ::msgcat::mcset ru "Postal Code" "Почтовый индекс"
 ::msgcat::mcset ru "Preferred:" "Предпочтительный:"
@@ -1041,8 +1043,8 @@
     "Показывать тип подписки на присутствие во всплывающем окне в контактах."
 ::msgcat::mcset ru "Show tabs below the main window." "Показывать заголовки вкладок в нижней части окна."
 ::msgcat::mcset ru "Show Toolbar." "Показывать панель инструментов."
-::msgcat::mcset ru "Show user info" "Информация о пользователе"
-::msgcat::mcset ru "Show user info..." "Показать информацию о пользователе..."
+::msgcat::mcset ru "Show user or service info" "Информация о пользователе или службе"
+::msgcat::mcset ru "Show user or service info..." "Показать информацию о пользователе или службе..."
 ::msgcat::mcset ru "Show" "Показать"
 ::msgcat::mcset ru "SI connection closed" "Соединение SI закрыто"
 ::msgcat::mcset ru "Signature not processed due to missing key" "Подпись не проверена из-за отсутствия ключа"
@@ -1229,7 +1231,7 @@
 ::msgcat::mcset ru "unix plugins" "расширения для unix"
 ::msgcat::mcset ru "Unrecoverable Error" "Неустранимая ошибка"
 ::msgcat::mcset ru "Unregister" "Отрегистрироваться"
-::msgcat::mcset ru "Unsubscribed from %s"
+::msgcat::mcset ru "Unsubscribed from %s" "Отписаны от %s"
 ::msgcat::mcset ru "Unsubscribe" "Отписаться"
 ::msgcat::mcset ru "Unsubscribe from a node" "Отписаться от узла"
 ::msgcat::mcset ru "Unsupported compression method" "Неподдерживаемый метод сжатия"
@@ -1316,7 +1318,6 @@
 ::msgcat::mcset ru "Warning:" "Предупреждение:"
 ::msgcat::mcset ru "Web Site:" "Веб-страница:"
 ::msgcat::mcset ru "Web Site" "Веб-страница:"
-::msgcat::mcset ru "We unsubscribed from %s"
 ::msgcat::mcset ru "What action does the close button." \
     "Действие, совершаемое при нажатии на кнопку закрытия окна."
 ::msgcat::mcset ru "Whois" "Кто это?"
@@ -1329,6 +1330,7 @@
 ::msgcat::mcset ru "XMPP stream options when connecting to server." \
     "Настройки XMPP-потока при подключении к серверу."
 ::msgcat::mcset ru "Year:" "Год:"
+::msgcat::mcset ru "You are unsubscribed from %s" "Вы отписаны от %s"
 ::msgcat::mcset ru "Zip:" "Индекс:"
 
 namespace eval :: {

Modified: trunk/tkabber/plugins/chat/logger.tcl
===================================================================
--- trunk/tkabber/plugins/chat/logger.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/plugins/chat/logger.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -20,8 +20,8 @@
     }
 }
 
-proc ::logger::add_menu_item {state cathegory m connid jid} {
-    switch -- $cathegory {
+proc ::logger::add_menu_item {state category m connid jid} {
+    switch -- $category {
 	roster {
 	    set jid [roster::find_jid $connid $jid]
 	}

Modified: trunk/tkabber/plugins/filetransfer/http.tcl
===================================================================
--- trunk/tkabber/plugins/filetransfer/http.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/plugins/filetransfer/http.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -13,10 +13,21 @@
     custom::defvar options(enable) 1 \
 	[::msgcat::mc "Enable HTTP transport for outgoing file transfers."] \
 	-group HTTP -type boolean
+
+    custom::defvar options(port) 0 \
+        [::msgcat::mc "Port for outgoing HTTP file transfers (0 for assigned automatically).\
+	This is useful when sending files from behind a NAT with a forwarded port."] \
+	-group HTTP -type integer
+
+    custom::defvar options(host) "" \
+        [::msgcat::mc "Force advertising this hostname (or IP address) for outgoing HTTP file transfers."] \
+	-group HTTP -type string
+
 }
 
 proc http::send_file_dialog {user args} {
     variable winid
+    variable options
 
     foreach {opt val} $args {
 	switch -- $opt {
@@ -51,13 +62,17 @@
     label $f.lip -text [::msgcat::mc "IP address:"]
     entry $f.ip -textvariable [list [namespace current]::ip$winid]
     variable ip$winid 127.0.0.1
-    catch {
-        set ip$winid [info hostname]
-	set ip$winid [lindex [host_info addresses [set ip$winid]] 0]
-    }
 
-    catch {
-	set ip$winid [lindex [fconfigure $jlib::lib($connid,sck) -sockname] 0]
+    if {[string compare $options(host) ""] != 0} {
+	set ip$winid $options(host)
+    } else {
+	catch {
+	    set ip$winid [info hostname]
+	    set ip$winid [lindex [host_info addresses [set ip$winid]] 0]
+	}
+	if {[jlib::socket_ip $connid] != ""} {
+	    set ip$winid [jlib::socket_ip $connid]
+	}
     }
 
     ProgressBar $f.pb \
@@ -136,6 +151,7 @@
 }
 
 proc http::send_file_offer {winid user filename desc ip args} {
+    variable options
 
     foreach {opt val} $args {
 	switch -- $opt {
@@ -148,7 +164,7 @@
 
     set servsock \
 	[socket -server \
-	     [list [namespace current]::send_file_accept $winid $filename] 0]
+	     [list [namespace current]::send_file_accept $winid $filename] $options(port)]
 
     lassign [fconfigure $servsock -sockname] addr hostname port
 
@@ -457,7 +473,7 @@
 	set label [::msgcat::mc "Send file via HTTP..."] \
     }
     $m add command -label $label \
-        -command [list eval \
+	-command [list eval \
 		      [list [namespace current]::send_file_dialog $jid] $args]
 
     hook::unset_flag create_filetransfer_menu_hook transport

Modified: trunk/tkabber/plugins/general/remote.tcl
===================================================================
--- trunk/tkabber/plugins/general/remote.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/plugins/general/remote.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -6,6 +6,7 @@
 namespace eval ::remote {
     array set commands {}
     array set sessions {}
+    set prefix "::remote::sessions"
 
     custom::defgroup {Remote Control} \
 	[::msgcat::mc "Remote control options."] -group Tkabber
@@ -26,6 +27,7 @@
     #	[::msgcat::mc "Show my own resources in the roster."] \
     #	-type boolean -group {Remote Control}
 }
+namespace eval ::remote::sessions {}
 
 ############################################
 
@@ -72,7 +74,7 @@
     variable commands
 
     if {![allow_remote_control $connid $from]} {
-	return {error auth forbidden}
+	return {error cancel not-allowed}
     }
 
     jlib::wrapper:splitxml $xmllist tag vars isempty chdata children
@@ -100,7 +102,7 @@
     variable commands
 
     if {![allow_remote_control $connid $from]} {
-	return {error auth forbidden}
+	return {error cancel not-allowed}
     }
 
     set myjid [jlib::connection_jid $connid]
@@ -135,42 +137,48 @@
 #######################################
 # Base engine.
 
-proc ::remote::clear_session {sid node} {
+proc ::remote::clear_session {session node} {
     variable commands
     variable sessions
 
     if {![info exists commands(command,$node)]} return
 
-    $commands(command,$node) $sid cancel {}
+    $commands(command,$node) $session cancel {}
 
-    catch {unset sessions(node,$sid)}
-    catch {unset sessions(connid,$sid)}
-    catch {unset sessions(from,$sid)}
-    catch {unset sessions(lang,$sid)}
+    upvar 0 $session state
+    catch {unset sessions($state(connid),$state(from),$state(node),$state(id))}
+
+    catch {unset $session}
 }
 
 proc ::remote::create_session {node connid from lang} {
     variable commands
     variable sessions
+    variable prefix
 
     if {![info exists commands(command,$node)]} return
 
-    set cur_time [clock seconds]
-    set rnd [random 1000]
+    set id [random 1000000000]
+    while {[info exists sesssions($connid,$from,$node,$id)]} {
+	set id [random 1000000000]
+    }
 
-    while {[info exists sessions(node,"$cur_time-$rnd")]} {
-	set cur_time [clock seconds]
-	set rnd [random 1000]
+    set counter 1
+    while {[info exists "${prefix}::${counter}"]} {
+	incr counter
     }
 
-    set sid "$cur_time-$rnd"
+    set session "${prefix}::${counter}"
+    upvar 0 $session state
 
-    set sessions(node,$sid) $node
-    set sessions(connid,$sid) $connid
-    set sessions(from,$sid) $from
-    set sessions(lang,$sid) $lang
+    set state(id) $id
+    set state(connid) $connid
+    set state(from) $from
+    set state(node) $node
+    set state(lang) $lang
+    set sessions($connid,$from,$node,$id) $session
 
-    return $sid
+    return $session
 }
 
 proc ::remote::command_set_handler {connid from lang child} {
@@ -178,71 +186,66 @@
     variable sessions
 
     if {![allow_remote_control $connid $from]} {
-	return {error auth forbidden}
+	return {error cancel not-allowed}
     }
 
     jlib::wrapper:splitxml $child tag vars isempty chdata children
 
     set node [jlib::wrapper:getattr $vars node]
     set action [jlib::wrapper:getattr $vars action]
-    set sid [jlib::wrapper:getattr $vars sessionid]
+    set id [jlib::wrapper:getattr $vars sessionid]
 
     if {![info exists commands(command,$node)]} {
 	return {error cancel item-not-found}
     }
 
-    if {[cequal $sid ""]} {
+    if {[cequal $id ""]} {
 	# We use lang only when create session.
 	# Probably it would be better to use it after every request.
-	set sid [create_session $node $connid $from $lang]
+	set session [create_session $node $connid $from $lang]
     } else {
-	if {![info exists sessions(node,$sid)]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag session-expired \
-				  -vars [list xmlns $::NS(commands)]]]
+	if {![info exists sessions($connid,$from,$node,$id)]} {
+	    return [get_error modify bad-request bad-sessionid]
 	}
-
-	if {![cequal $sessions(node,$sid) $node] || \
-	    ![cequal $sessions(connid,$sid) $connid] || \
-	    ![cequal $sessions(from,$sid) $from]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag bad-sessionid \
-				  -vars [list xmlns $::NS(commands)]]]
-	}
+	set session $sessions($connid,$from,$node,$id)
     }
 
+    upvar 0 $session state
+    set id $state(id)
+
     if {[cequal $action cancel]} {
-	clear_session $sid $node
+	clear_session $session $node
 	return [list result [jlib::wrapper:createtag command \
 				 -vars [list xmlns $::NS(commands) \
-					     sessionid $sid \
+					     sessionid $id \
 					     node $node \
 					     status canceled]]]
     }
 
-    set result [$commands(command,$node) $sid $action $children]
+    set result [$commands(command,$node) $session $action $children]
 
     set status [lindex $result 0]
     switch -- $status {
 	error {
-	    clear_session $sid $node
+	    set error_type [lindex $result 1]
+	    if {![cequal $error_type "modify"]} {
+		clear_session $session $node
+	    }
 	    return $result
 	}
 	completed {
-	    clear_session $sid $node
+	    clear_session $session $node
 	}
 	executing {}
 	default {
-	    clear_session $sid $node
+	    clear_session $session $node
 	    return {error wait internal-server-error}
 	}
     }
 
     return [list result [jlib::wrapper:createtag command \
 			     -vars [list xmlns $::NS(commands) \
-					 sessionid $sid \
+					 sessionid $id \
 					 node $node \
 					 status $status] \
 			     -subtags [lrange $result 1 end]]]
@@ -250,67 +253,68 @@
 
 iq::register_handler set command $::NS(commands) ::remote::command_set_handler
 
+proc ::remote::get_error {type general {specific ""}} {
+    set res [list error $type $general]
+    if {![cequal $specific ""]} {
+	lappend res -application-specific \
+	    [jlib::wrapper:createtag $specific \
+		 -vars [list xmlns $::NS(commands)]]
+    }
+    return $res
+}
+
+
 ############################################
 # Common functions for command implementations.
 
 # Scheduler for one-step dialogs and wizards
-proc ::remote::standart_scheduler {steps prefix sid action children} {
-    variable sessions
+proc ::remote::standart_scheduler {steps prefix session action children} {
+    upvar 0 $session state
 
     if {[cequal $action cancel]} {
-	catch { unset sessions($prefix,step,$sid) }
 	for {set i 1} {$i <= $steps} {incr i} {
-	    $prefix:clear_step$i $sid
+	    ${prefix}clear_step$i $session
 	}
 	return
     }
 
-    if {![info exists sessions($prefix,step,$sid)] } {
+    if {![info exists state(step)] } {
 	# First step
 
 	if {![cequal $action execute] && ![cequal $action ""]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag bad-action \
-				  -vars [list xmlns $::NS(commands)]]]
+	    return [::remote::get_error modify bad-request bad-action]
 	}
 
-	set sessions($prefix,step,$sid) 1
-	return [$prefix:get_step$sessions($prefix,step,$sid) $sid]
+	set state(step) 1
+	return [${prefix}get_step$state(step) $session]
 
-    } elseif {$sessions($prefix,step,$sid) < $steps} {
+    } elseif {$state(step) < $steps} {
 	# Inner step
-
+	# TODO: support for "next" and "prev" actions
 	if {![cequal $action execute] && ![cequal $action ""]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag bad-action \
-				  -vars [list xmlns $::NS(commands)]]]
+	    return [::remote::get_error modify bad-request bad-action]
 	}
 
-	set res [$prefix:set_step$sessions($prefix,step,$sid) $sid $children]
+	set res [${prefix}set_step$state(step) $session $children]
 	if {[cequal [lindex $res 0] error]} {
 	    return $res
 	}
 
-	incr sessions($prefix,step,$sid)
-	return [$prefix:get_step$sessions($prefix,step,$sid) $sid]
+	incr state(step)
+	return [${prefix}get_step$state(step) $session]
 
     } else {
 	# Last step
 	if {![cequal $action complete] && ![cequal $action ""]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag bad-action \
-				  -vars [list xmlns $::NS(commands)]]]
+	    return [::remote::get_error modify bad-request bad-action]
 	}
 
-	set res [$prefix:set_step$sessions($prefix,step,$sid) $sid $children]
+	set res [${prefix}set_step$state(step) $session $children]
 	if {[cequal [lindex $res 0] error]} {
 	    return $res
 	}
 
-	return [$prefix:get_finish $sid]
+	return [${prefix}get_finish $session]
     }
 }
 
@@ -326,20 +330,14 @@
 	    continue
 	}
 	if {![cequal $type submit]} {
-	    return [list error cancel bad-request \
-			 -application-specific \
-			     [jlib::wrapper:createtag bad-payload \
-				  -vars [list xmlns $::NS(commands)]]]
+	    return [::remote::get_error modify bad-request bad-payload]
 	}
 
 	foreach field [::data::parse_xdata_results $children -hidden 1] {
 	    lassign $field var label values
 	    if {[cequal $var FORM_TYPE]} {
 		if {![cequal [lindex $values 0] $form_type]} {
-		    return [list error cancel bad-request \
-				 -application-specific \
-				     [jlib::wrapper:createtag bad-payload \
-					  -vars [list xmlns $::NS(commands)]]]
+		    return [::remote::get_error modify bad-request bad-payload]
 		}
 	    } else {
 		lappend result $var $values
@@ -352,21 +350,24 @@
 
 ############################
 #Change status
-proc ::remote::change_status {sid action children} {
-	return [standart_scheduler 1 change_status $sid $action $children]
+namespace eval ::remote::change_status {}
+
+proc ::remote::change_status::scheduler {session action children} {
+    return [::remote::standart_scheduler 1 "[namespace current]::" $session $action $children]
 }
 ::remote::register_command "http://jabber.org/protocol/rc#set-status" \
-			   ::remote::change_status "Change status"
+			   ::remote::change_status::scheduler "Change status"
 
 # step1:
 # send standart form
-proc ::remote::change_status:get_step1 {sid} {
+proc ::remote::change_status::get_step1 {session} {
     global userstatus
     global textstatus
     global userpriority
-    variable sessions
 
-    set lang $sessions(lang,$sid)
+    upvar 0 $session state
+    set lang $state(lang)
+
     set fields {}
 
     lappend fields [data::createfieldtag hidden \
@@ -412,8 +413,8 @@
 
 }
 
-proc ::remote::change_status:set_step1 {sid children} {
-    variable sessions
+proc ::remote::change_status::set_step1 {session children} {
+    upvar 0 $session state
 
     set result [remote::standart_parseresult $children \
 					     "http://jabber.org/protocol/rc"]
@@ -424,48 +425,43 @@
     array set params $result
 
     if {![info exists params(status)] || \
-	![info exists params(status-priority)]} {
-	return [list error cancel bad-request \
-		     -application-specific \
-			 [jlib::wrapper:createtag bad-payload \
-			      -vars [list xmlns $::NS(commands)]]]
+	![info exists params(status-priority)] || \
+	![info exists ::statusdesc($params(status))] || \
+	[catch {expr int($params(status-priority))}]} {
+	return [::remote::get_error modify bad-request bad-payload]
     }
 
-    set sessions(change_status,textstatus,$sid) {}
+    set state(textstatus) {}
     catch {
-	set sessions(change_status,textstatus,$sid) \
+	set state(textstatus) \
 	    [join $params(status-message) "\n"]
     }
-    set sessions(change_status,userstatus,$sid) \
+
+    set state(userstatus) \
 	[lindex $params(status) 0]
-    set sessions(change_status,userpriority,$sid) \
+    set state(userpriority) \
 	[lindex $params(status-priority) 0]
 
     return {}
 }
 
-proc ::remote::change_status:clear_step1 {sid} {
-    variable sessions
+proc ::remote::change_status::clear_step1 {session} {}
 
-    catch { unset sessions(change_status,textstatus,$sid) }
-    catch { unset sessions(change_status,userstatus,$sid) }
-    catch { unset sessions(change_status,userpriority,$sid) }
-}
-
 # finish:
 # change status
 # report
-proc ::remote::change_status:get_finish {sid} {
-    variable sessions
+proc ::remote::change_status::get_finish {session} {
     global userstatus
     global textstatus
     global userpriority
 
-    set lang $sessions(lang,$sid)
-    set textstatus $sessions(change_status,textstatus,$sid)
-    set userpriority $sessions(change_status,userpriority,$sid)
-    set userstatus $sessions(change_status,userstatus,$sid)
+    upvar 0 $session state
+    set lang $state(lang)
 
+    set textstatus $state(textstatus)
+    set userpriority $state(userpriority)
+    set userstatus $state(userstatus)
+
     return [list completed [jlib::wrapper:createtag note \
 				-vars {type info} \
 				-chdata \
@@ -476,20 +472,22 @@
 
 ############################
 # Leave groupchats
-proc ::remote::leave_groupchats {sid action children} {
-    return [standart_scheduler 1 leave_groupchats $sid $action $children]
+namespace eval ::remote::leave_groupchats {}
+
+proc ::remote::leave_groupchats::scheduler {session action children} {
+    return [::remote::standart_scheduler 1 "[namespace current]::" $session $action $children]
 }
 ::remote::register_command "http://jabber.org/protocol/rc#leave-groupchats" \
-			   ::remote::leave_groupchats "Leave groupchats"
+			   ::remote::leave_groupchats::scheduler "Leave groupchats"
 
 # step1:
 # allow users to choose which chats to leave
-proc ::remote::leave_groupchats:get_step1 {sid} {
-    variable sessions
+proc ::remote::leave_groupchats::get_step1 {session} {
+    upvar 0 $session state
 
     set options {}
-    set lang $sessions(lang,$sid)
-    set connid $sessions(connid,$sid)
+    set lang $state(lang)
+    set connid $state(connid)
     foreach chatid [chat::opened] {
 	set jid [chat::get_jid $chatid]
 
@@ -538,8 +536,8 @@
 				-subtags $fields]]
 }
 
-proc ::remote::leave_groupchats:set_step1 {sid children} {
-    variable sessions
+proc ::remote::leave_groupchats::set_step1 {session children} {
+    upvar 0 $session state
 
     set result [remote::standart_parseresult $children \
 					     "http://jabber.org/protocol/rc"]
@@ -549,45 +547,38 @@
     array set params $result
 
     if {![info exists params(groupchats)]} {
-	return [list error cancel bad-request \
-		     -application-specific \
-			 [jlib::wrapper:createtag bad-payload \
-			      -vars [list xmlns $::NS(commands)]]]
+	return [::remote::get_error modify bad-request bad-payload]
     }
 
-    set sessions(leave_groupchats,all,$sid) [lindex $params(x-all) 0]
-    set sessions(leave_groupchats,groupchats,$sid) $params(groupchats)
-    set sessions(leave_groupchats,reason,$sid) ""
+    set state(all) [lindex $params(x-all) 0]
+    set state(groupchats) $params(groupchats)
+    set state(reason) ""
     catch {
-	set sessions(leave_groupchats,reason,$sid) [lindex $params(x-reason) 0]
+	set state(reason) [lindex $params(x-reason) 0]
     }
     return {}
 
 }
 
-proc ::remote::leave_groupchats:clear_step1 {sid} {
-    catch {unset sessions(leave_groupchats,groupchats,$sid)}
-    catch {unset sessions(leave_groupchats,reason,$sid)}
-    catch {unset sessions(leave_groupchats,all,$sid)}
-}
+proc ::remote::leave_groupchats::clear_step1 {session} {}
 
 # finish step
 # leave groupchats.
 # report
-proc ::remote::leave_groupchats:get_finish {sid} {
-    variable sessions
+proc ::remote::leave_groupchats::get_finish {session} {
+    upvar 0 $session state
 
-    set args [list -connection $sessions(connid,$sid)]
-    set lang $sessions(lang,$sid)
+    set args [list -connection $state(connid)]
+    set lang $state(lang)
 
-    if {![cequal $sessions(leave_groupchats,reason,$sid) ""]} {
-	lappend args -stat $sessions(leave_groupchats,reason,$sid)
+    if {![cequal $state(reason) ""]} {
+	lappend args -stat $state(reason)
     }
 
     # "all" workaround, will be removed soon
-    if $sessions(leave_groupchats,all,$sid) {
-	set connid $sessions(connid,$sid)
-	set sessions(leave_groupchats,groupchats,$sid) ""
+    if $state(all) {
+	set connid $state(connid)
+	set state(groupchats) ""
 
 	foreach chatid [chat::opened] {
 	    set jid [chat::get_jid $chatid]
@@ -596,11 +587,11 @@
 	    if {![chat::is_groupchat $chatid]} continue
 	    if {[cequal [get_jid_presence_info show $connid $jid] ""]} continue
 
-	    lappend sessions(leave_groupchats,groupchats,$sid) $jid
+	    lappend state(groupchats) $jid
 	}
     }
 
-    foreach jid $sessions(leave_groupchats,groupchats,$sid) {
+    foreach jid $state(groupchats) {
 	eval [list send_presence unavailable -to $jid] $args
     }
 
@@ -613,22 +604,26 @@
 
 ################################
 # Forward unread messages
+namespace eval ::remote::forward {
+    array set unread {}
+}
 
-proc ::remote::forward {sid action children} {
-    return [standart_scheduler 1 forward $sid $action $children]
+proc ::remote::forward::scheduler {session action children} {
+    return [::remote::standart_scheduler 1 "[namespace current]::" $session $action $children]
 }
 ::remote::register_command "http://jabber.org/protocol/rc#forward" \
-			   ::remote::forward "Forward unread messages"
+			   ::remote::forward::scheduler "Forward unread messages"
 
 # step1:
 # form with list of unreaded correspondence
-proc ::remote::forward:get_step1 {sid} {
-    variable sessions
+proc ::remote::forward::get_step1 {session} {
+    upvar 0 $session state
+    variable unread
 
     set options {}
-    set lang $sessions(lang,$sid)
-    set connid $sessions(connid,$sid)
-    foreach id [array names ::remote::forward::unread] {
+    set lang $state(lang)
+    set connid $state(connid)
+    foreach id [array names unread] {
 	lassign $id type chatid
 	if {![cequal [chat::get_connid $chatid] $connid]} continue
 
@@ -642,7 +637,7 @@
 	    set name $jid
 	}
 
-	set count [llength $::remote::forward::unread($id)]
+	set count [llength $unread($id)]
 
 	lappend options \
 		[list $id \
@@ -687,8 +682,8 @@
 				-subtags $fields]]
 }
 
-proc ::remote::forward:set_step1 {sid children} {
-    variable sessions
+proc ::remote::forward::set_step1 {session children} {
+    upvar 0 $session state
 
     set result [remote::standart_parseresult $children \
 					     "tkabber:plugins:remote:forward_form"]
@@ -698,46 +693,41 @@
     array set params $result
 
     if {![info exists params(chats)]} {
-	return [list error cancel bad-request \
-		     -application-specific \
-			 [jlib::wrapper:createtag bad-payload \
-			      -vars [list xmlns $::NS(commands)]]]
+	return [::remote::get_error modify bad-request bad-payload]
     }
 
-    set sessions(forward,all,$sid) [lindex $params(all) 0]
-    set sessions(forward,chats,$sid) $params(chats)
+    set state(all) [lindex $params(all) 0]
+    set state(chats) $params(chats)
     return {}
 }
 
-proc ::remote::forward:clear_step1 {sid} {
-    catch {unset sessions(forward,chats,$sid)}
-    catch {unset sessions(forward,all,$sid)}
-}
+proc ::remote::forward::clear_step1 {session} {}
 
 # finish:
 # forward selected unread messages
 # report
-proc ::remote::forward:get_finish {sid} {
-    variable sessions
+proc ::remote::forward::get_finish {session} {
+    upvar 0 $session state
+    variable unread
 
-    set connid $sessions(connid,$sid)
-    set lang $sessions(lang,$sid)
+    set connid $state(connid)
+    set lang $state(lang)
     set oto [jlib::connection_jid $connid]
-    set target $sessions(from,$sid)
+    set target $state(from)
 
     # "all" workaround, will be removed soon
-    if $sessions(forward,all,$sid) {
-	set sessions(forward,chats,$sid) {}
+    if $state(all) {
+	set state(chats) {}
 
-	foreach id [array names forward::unread] {
+	foreach id [array names unread] {
 	    lassign $id type chatid
 	    if {![cequal [chat::get_connid $chatid] $connid]} continue
-	    lappend sessions(forward,chats,$sid) $id
+	    lappend state(chats) $id
 	}
     }
 
-    foreach id $sessions(forward,chats,$sid) {
-	forward::forward_messages $id $connid $oto $target
+    foreach id $state(chats) {
+	forward_messages $id $connid $oto $target
     }
 
     return [list completed \
@@ -750,9 +740,6 @@
 
 #############################
 # Forward namespace
-namespace eval ::remote::forward {
-    array set unread {}
-}
 
 # forwards messages
 # leaves marks that they was forwarded.
@@ -763,6 +750,8 @@
 
     lassign $id type chatid
 
+    if {![info exists unread($id)]} { return }
+
     foreach elem $unread($id) {
 
 	switch -- $type {

Modified: trunk/tkabber/plugins/iq/version.tcl
===================================================================
--- trunk/tkabber/plugins/iq/version.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/plugins/iq/version.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -62,6 +62,36 @@
     return $linux_distribution
 }
 
+proc guess_windows_version {} {
+    global tcl_platform
+
+    switch -- $tcl_platform(os) {
+	"Win32s" {
+	    return "Windows 3.1"
+	}
+	"Windows 95" {
+	    switch -- $tcl_platform(osVersion) {
+		4.0  { return "Windows 95" }
+		4.10 { return "Windows 98" }
+		4.90 { return "Windows ME" }
+		default { return "$tcl_platform(os) $tcl_platform(osVersion)" }
+	    }
+	}
+	"Windows NT" {
+	    switch -- $tcl_platform(osVersion) {
+		5.0 { return "Windows 2000"  }
+		5.1 { return "Windows XP"    }
+		5.2 { return "Windows 2003"  }
+		6.0 { return "Windows Vista" }
+		default { return "$tcl_platform(os) $tcl_platform(osVersion)" }
+	    }
+	}
+	default {
+	    return "$tcl_platform(os) $tcl_platform(osVersion)"
+	}
+    }
+}
+
 proc iq_version {connid from lang child} {
     global version toolkit_version tcl_platform
     variable options
@@ -72,10 +102,13 @@
 
     jlib::wrapper:splitxml $child tag vars isempty chdata children
 
-    switch -- $tcl_platform(os) {
+    switch -glob -- $tcl_platform(os) {
 	Linux {
 	    set os "[guess_linux_distribution] $tcl_platform(osVersion)"
 	}
+	Win* {
+	    set os [guess_windows_version]
+	}
 	default {
 	    set os "$tcl_platform(os) $tcl_platform(osVersion)"
 	}

Modified: trunk/tkabber/presence.tcl
===================================================================
--- trunk/tkabber/presence.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/presence.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -53,9 +53,8 @@
 	unsubscribe {}
 	unsubscribed {
 	    MessageDlg .unsubscribed -aspect 50000 -icon info \
-		-title [format [::msgcat::mc "Unsubscribed from %s"] $from] \
-		-message [format \
-			      [::msgcat::mc "We unsubscribed from %s"] $from] \
+		-title [::msgcat::mc "Unsubscribed from %s" $from] \
+		-message [::msgcat::mc "You are unsubscribed from %s" $from] \
 		-type user -buttons {ok} -default 0 -cancel 0
 	}
 	probe {}

Modified: trunk/tkabber/roster.tcl
===================================================================
--- trunk/tkabber/roster.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/roster.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -490,6 +490,7 @@
 	-connection $connid
 	
     jlib::send_presence -to $jid -type unsubscribe -connection $connid
+    jlib::send_presence -to $jid -type unsubscribed -connection $connid
 
     lassign [get_category_and_subtype $connid $jid] category subtype
 

Added: trunk/tkabber/trans/pl.msg
===================================================================
--- trunk/tkabber/trans/pl.msg	                        (rev 0)
+++ trunk/tkabber/trans/pl.msg	2006-09-25 18:59:51 UTC (rev 731)
@@ -0,0 +1,38 @@
+
+# Polish translation file for replying to other client queries
+
+::trans::trset pl "Change status" "Zmień status"
+::trans::trset pl "Change Status" "Zmiana statusu"
+::trans::trset pl "Choose from wich chats or groupchats you want to" "Wybierz rozmowy i konferencje"
+::trans::trset pl "Choose groupchats you want to leave" "Wybierz rozmowy i konferencje, które chcesz zamknąć"
+::trans::trset pl "Choose status, priority, and status message" "Wybierz status, priorytet i opis statusu"
+::trans::trset pl "Forward all messages" "Przekaż wszystkie wiadomości"
+::trans::trset pl "Forward messages from" "Przekaż wiadomości od"
+::trans::trset pl "Forward unread messages" "Przekaż nieprzeczytane widomości"
+::trans::trset pl "Forward Unread Messages" "Przekazywanie nieprzeczytanych wiadomości"
+::trans::trset pl "Groupchats" "Konferencje"
+::trans::trset pl "Groupchats were leaved successfully" "Konferencje zostały pomyślnie zamknięte"
+::trans::trset pl "Leave all groupchats" "Zamknij wszystkie konferencje"
+::trans::trset pl "Leave groupchats" "Zamknij konferencje"
+::trans::trset pl "Leave Groupchats" "Zamknięcie konferencji"
+::trans::trset pl "Message" "Opis statusu"
+::trans::trset pl "No groupchats to leave" "Brak konferencji do zamknięcia"
+::trans::trset pl "Priority" "Priorytet"
+::trans::trset pl "Reason" "Powód"
+::trans::trset pl "Remote control" "Zdalne sterowanie"
+::trans::trset pl "%s at %s" "%s w %s"
+::trans::trset pl "%s (%s)"
+::trans::trset pl "%s: %s chat message(s)" "%s: %s wiadomość(i) w rozmowie"
+::trans::trset pl "%s: %s groupchat message(s)" "%s: %s wiadomość(i) w konferencji"
+::trans::trset pl "%s: %s headline message(s)" "%s: %s nagłówek(ów) widomości"
+::trans::trset pl "%s: %s normal message(s)" "%s: %s zwykła(e) wiadomość(i)"
+::trans::trset pl "Status" "Status"
+::trans::trset pl "Status was changed successfully" "Status został pomyślnie zmieniony"
+::trans::trset pl "There are no unread messages" "Brak nieprzeczytanych wiadomości"
+::trans::trset pl "Unread messages were forwarded successfully" "Nieprzeczytane wiadomości zostały pomyślnie przekazane"
+::trans::trset pl "Available" "Dostępny"
+::trans::trset pl "Free to chat" "Chętny do rozmowy"
+::trans::trset pl "Away" "Zaraz wracam"
+::trans::trset pl "Extended away" "Nieobecny"
+::trans::trset pl "Do not disturb" "Nie przeszkadzać"
+::trans::trset pl "Unavailable" "Rozłączony"

Modified: trunk/tkabber/userinfo.tcl
===================================================================
--- trunk/tkabber/userinfo.tcl	2006-09-24 17:43:13 UTC (rev 730)
+++ trunk/tkabber/userinfo.tcl	2006-09-25 18:59:51 UTC (rev 731)
@@ -19,7 +19,7 @@
     set connid [lindex [jlib::connections] 0]
     set show_info_connid [jlib::connection_jid $connid]
 
-    Dialog $gw -title [::msgcat::mc "Show user info"] -separator 1 -anchor e \
+    Dialog $gw -title [::msgcat::mc "Show user or service info"] -separator 1 -anchor e \
 	    -default 0 -cancel 1
 
     set gf [$gw getframe]



More information about the Tkabber-dev mailing list